如何通过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
相关产品推荐
相关产品推荐

