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

Pyplot双Y轴科学计数法标识位置调整问题

解决Matplotlib双Y轴科学计数法偏移量位置问题

当右侧Y轴启用科学计数法后,默认的偏移量(如1e7)会显示在轴顶部,和右侧刻度位置不一致,你可以通过调整偏移量文本的对齐方式和位置来解决:

核心步骤

  1. 获取右侧Y轴的科学计数法偏移量文本对象
  2. 设置文本的水平对齐为右,并调整其水平位置偏移

完整示例代码

import matplotlib.pyplot as plt
import numpy as np

# 生成测试数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.sin(x) * 1.6e7  # 大数值触发科学计数法

fig, ax1 = plt.subplots()

# 配置左侧Y轴
ax1.plot(x, y1, color='tab:blue')
ax1.set_ylabel('左侧轴数值', color='tab:blue')
ax1.tick_params(axis='y', labelcolor='tab:blue')

# 配置右侧Y轴
ax2 = ax1.twinx()
ax2.plot(x, y2, color='tab:red')
ax2.set_ylabel('右侧轴数值', color='tab:red')
ax2.tick_params(axis='y', labelcolor='tab:red')
ax2.yaxis.tick_right()  # 将刻度移到右侧

# 调整科学计数法偏移量位置
offset = ax2.yaxis.get_offset_text()
offset.set_horizontalalignment('right')  # 设置水平右对齐
offset.set_x(1.1)  # 向右偏移,可根据图表布局微调这个值(比如1.05、1.15)

plt.tight_layout()
plt.show()

补充说明

  • 也可以用更简洁的写法:ax2.yaxis.offsetText.set_ha('right') 替代获取offset对象再设置对齐的步骤
  • set_x()的参数是相对轴的位置,1表示轴的最右侧,大于1的数值会让文本超出轴的范围,显示在右侧
  • 如果需要垂直居中,可额外设置offset.set_verticalalignment('center'),不过默认一般已经是居中状态

内容的提问来源于stack exchange,提问作者Joe.Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:12:09