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
相关产品推荐
相关产品推荐

