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

pyplot主次y轴刻度值格式化及字体大小设置问题咨询

Matplotlib 双Y轴刻度值字体大小调整方案

问题根源

你此前调用ax1.yaxis.set_ticks(y1, size=20)时传入的size参数仅作用于刻度线的长度,并非刻度数值标签的字体大小,因此无法实现预期效果。

解决方法

使用坐标轴对象的tick_params()方法指定labelsize参数,即可分别调整主次Y轴的刻度值字体大小:

  • 主Y轴(ax1)刻度字体设置:ax1.tick_params(axis='y', labelsize=20)
  • 次Y轴(ax2)刻度字体设置:ax2.tick_params(axis='y', labelsize=20)
    可选优化:追加labelcolor参数让刻度值颜色和对应轴标签颜色统一,视觉效果更协调。

修改后完整代码

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

plt.rcParams["figure.figsize"] = [16, 9]
plt.rcParams["figure.autolayout"] = True

x = [0,1,2,3,4,5,6,7,8,9,10]
y1 = [0,1,2,3,4,5,6,7,8,9,10]
y2 = [1000,900,800,700,600,500,400,300,200,100,0]

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

ax1.set_xlabel('increment', size=14)

ax1.set_ylabel('series 1', color='g', fontsize=14)
ax2.set_ylabel('series 2', color='b', size=14)

plt.title("This Plot is a Test\n\n", size=18, color='green')
plt.suptitle("\n\nJust a Test", size=18, color='blue')

ax1.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
ax1.yaxis.set_ticks(y1)
# 新增两行设置主次Y轴刻度值字体大小
ax1.tick_params(axis='y', labelsize=20, labelcolor='g')
ax2.tick_params(axis='y', labelsize=20, labelcolor='b')
# 若需要调整X轴刻度字体大小可追加下方代码
# ax1.tick_params(axis='x', labelsize=16)

ax1.grid() # 替换原plt.grid(),避免网格和次Y轴对齐显示异常
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:03