Форматирование оси z в mplot3d

Я пытаюсь создать график поверхности в matplotlib, но мне не удается сделать форматирование оси z хорошо. Я хочу, чтобы это было в научной нотации с префиксом по оси и показателем над осью (например, то, что вы обычно получаете в Matlab). На данный момент я могу получить только значения без научного обозначения (с запятой и пятью нулями впереди) или я получаю префиксы, но не показатель степени ...

Попробуйте 1: (дает научное представление, но не показатель степени )

from matplotlib import ticker

ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=3, cstride=3)
formatter = ticker.ScalarFormatter()
formatter.set_scientific(True)
formatter.set_powerlimits((-2,2))
ax.w_zaxis.set_major_formatter(formatter)

Попробуйте 2: (дает значения в десятичной форме, такие же, как при выводе по умолчанию)

from matplotlib import ticker

ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=3, cstride=3)
ax.ticklabel_format(axis="z", style="sci", scilimits=(0,0))

Что я здесь делаю не так?

11
задан Magnus 6 July 2011 в 12:45
поделиться