форматирование по оси Z в mplot3d - PullRequest
11 голосов
/ 06 июля 2011

Я пытаюсь нарисовать поверхность в 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))

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

1 Ответ

3 голосов
/ 25 июля 2011

Когда вы создаете ScalarFormatter, попробуйте параметр «использовать математический текст»:

from matplotlib import ticker
niceMathTextForm = ticker.ScalarFormatter(useMathText=True)
ax.w_zaxis.set_major_formatter(niceMathTextForm)
...