mplot3d中的z轴格式

Mag*_*nus 11 python matplotlib 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)
Run Code Online (Sandbox Code Playgroud)

尝试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))
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Joh*_*yon 4

当您创建 时ScalarFormatter,请尝试“使用数学文本”参数:

from matplotlib import ticker
niceMathTextForm = ticker.ScalarFormatter(useMathText=True)
ax.w_zaxis.set_major_formatter(niceMathTextForm)
Run Code Online (Sandbox Code Playgroud)