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

如何通过Matplotlib的secondary_yaxis设置次坐标轴标签格式

如何通过secondary_yaxis设置坐标轴标签的格式

你遇到的AttributeError报错原因是:SecondaryAxis对象的初始化接口不直接接受format、ticklabel_format这类刻度格式相关参数,需要先完成次坐标轴创建,再单独配置其刻度格式。

你只需要在secax实例生成后,调用y轴的set_major_formatter方法设置目标格式即可,修改后的完整代码如下:

import matplotlib.pyplot as plt
import numpy as np

# 公里和百帕的单位转换函数
def km2hPa(input):
    return np.exp( input / -7.6 ) * 1013.

def hPa2Km(input):
    return -7.6 * np.log( input  / 1013. )

# 生成模拟绘图数据
Y = np.linspace(1000, 100, 100)
X = np.array( [i**2 for i in np.linspace(0, 10, len(Y)) ] )

# 同时绘制主坐标轴(百帕)和次坐标轴(公里)
plt.close('all')
fig, ax = plt.subplots()
plt.plot(X, Y)
ax.set_ylabel('气压高度 (hPa)')
ax.invert_yaxis()
secax = ax.secondary_yaxis('right', functions=(hPa2Km, km2hPa))
# 新增:设置次y轴刻度格式为%g
secax.yaxis.set_major_formatter('%g')
secax.set_ylabel('高度 (km)')
plt.show()

如果有其他精细化控制需求,可以参考以下扩展配置:

  • 自定义刻度保留小数位数,例如保留1位小数:secax.yaxis.set_major_formatter('{x:.1f}')
  • 调整刻度样式:secax.tick_params(axis='y', labelsize=10, labelcolor='gray')

效果示例:
次坐标轴效果示例图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:10