mplot3d中的z轴格式化

12 投票
1 回答
2899 浏览
提问于 2025-04-16 20:56

我正在尝试在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 个回答

4

当你创建你的 ScalarFormatter 时,可以试试“使用数学文本”这个参数:

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

撰写回答