You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免plot_surface中的偏移乘数超出图表显示范围?

matplotlib 3D曲面图科学计数法偏移乘数显示异常的解决办法

使用plot_surface绘制3D图表时,当坐标轴数值触发科学计数法显示时,偏移乘数(如+1.5e5)会偏移到图表可视范围外,无法正常查看。该问题可复现于matplotlib官方示例,且在matplotlib 3.7.1 + Python 3.11环境下,尝试ax.get_xaxis().get_major_formatter().set_useOffset(False)无法关闭偏移。

复现代码

import matplotlib.pyplot as plt
import numpy as np

ax = plt.figure().add_subplot(projection='3d')

X, Y = np.mgrid[0:6*np.pi:0.25, 0:4*np.pi:0.25]
Z = np.sqrt(np.abs(np.cos(X) + np.cos(Y)))

ax.plot_surface(X * 1e5, Y * 1e5, Z, cmap='autumn',cstride=2, rstride=2)

ax.set_xlabel("X label")
ax.set_ylabel("Y label")
ax.set_zlabel("Z label")
ax.set_zlim(0, 2)

plt.show()

问题截图

偏移乘数超出图表范围的3D图


解决方案

方案一:关闭科学计数法偏移,直接显示完整刻度

3D坐标轴的默认格式化器无法通过常规方法关闭偏移,需手动指定ScalarFormatter并配置参数:

from matplotlib.ticker import ScalarFormatter

# 配置X轴格式化器,关闭偏移
x_formatter = ScalarFormatter(useMathText=True)
x_formatter.set_useOffset(False)
ax.xaxis.set_major_formatter(x_formatter)

# 同理配置Y轴
y_formatter = ScalarFormatter(useMathText=True)
y_formatter.set_useOffset(False)
ax.yaxis.set_major_formatter(y_formatter)

修改后的完整代码:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import ScalarFormatter

ax = plt.figure().add_subplot(projection='3d')

X, Y = np.mgrid[0:6*np.pi:0.25, 0:4*np.pi:0.25]
Z = np.sqrt(np.abs(np.cos(X) + np.cos(Y)))

ax.plot_surface(X * 1e5, Y * 1e5, Z, cmap='autumn', cstride=2, rstride=2)

ax.set_xlabel("X label")
ax.set_ylabel("Y label")
ax.set_zlabel("Z label")
ax.set_zlim(0, 2)

# 关闭X轴偏移
x_formatter = ScalarFormatter(useMathText=True)
x_formatter.set_useOffset(False)
ax.xaxis.set_major_formatter(x_formatter)

# 关闭Y轴偏移
y_formatter = ScalarFormatter(useMathText=True)
y_formatter.set_useOffset(False)
ax.yaxis.set_major_formatter(y_formatter)

plt.show()

方案二:调整偏移文本的显示位置

若需保留科学计数法偏移格式,可手动移动偏移文本到图表可视区域内:

# 调整X轴偏移文本位置
ax.xaxis.get_offset_text().set_position((1.1, 0))
# 调整Y轴偏移文本位置
ax.yaxis.get_offset_text().set_position((1.1, 0))

内容的提问来源于stack exchange,提问作者Cesar Carrasco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:07:34