如何修改matplotlib中secondary Y axis次Y轴的刻度字体大小
matplotlib次Y轴刻度字体大小不生效问题
问题场景
编写数据可视化代码调整坐标轴刻度字体大小时,使用如下代码期望统一设置所有轴的刻度字号为16号:
ax.set_xticks([-95, -97, -99, -101, -103]) ax.set_yticks([33, 34, 35, 36, 37]) secax = ax.secondary_yaxis(1.0) secax.set_yticks([33, 34, 35, 36, 37]) ax.tick_params(axis = 'both', labelsize = 16)
运行后X轴、主Y轴的刻度字号可正常调整为16号,但secondary_yaxis()生成的次Y轴刻度字号未发生变化,实际运行效果如下:
问题原因
ax.tick_params()仅对调用方法的主坐标轴实例生效,secondary_yaxis()生成的次坐标轴是独立的坐标轴对象,不会自动继承主坐标轴的刻度参数配置,因此主坐标轴的字号设置不会同步到次Y轴。
修复方案
直接对次坐标轴实例secax单独调用tick_params()方法设置刻度字号即可,修正后的代码如下:
ax.set_xticks([-95, -97, -99, -101, -103]) ax.set_yticks([33, 34, 35, 36, 37]) secax = ax.secondary_yaxis(1.0) secax.set_yticks([33, 34, 35, 36, 37]) # 设置主坐标轴刻度字号 ax.tick_params(axis = 'both', labelsize = 16) # 单独设置次Y轴刻度字号 secax.tick_params(labelsize=16)
- 次坐标轴的
tick_params()参数用法和主坐标轴完全一致,如需调整刻度线长度、标签颜色、刻度方向等属性,直接传入对应参数即可。 - 如果存在多个次坐标轴(比如双侧都有次轴),需要对每个次坐标轴实例单独调用方法设置参数。
内容的提问来源于stack exchange,提问作者Fruitsy
相关产品推荐
相关产品推荐

