Matplotlib对数图中无法设置双轴刻度字体大小一致的问题
解决Matplotlib对数图X轴刻度字体大小不一致问题
问题出在设置刻度字体的顺序:你先调用ax.tick_params()设置字体大小,之后才切换到对数刻度。Matplotlib在切换对数刻度时,会重新生成X轴的刻度标签,这会覆盖之前设置的字体大小,导致X轴和Y轴刻度字体不一致。
修复方案
将设置刻度字体大小的代码移到设置对数刻度之后,确保对数刻度生成完成后再应用自定义字体样式:
import numpy as np import matplotlib.pyplot as plt fontsize = 8 x = np.linspace(5.6e-5,6.5e-5, 120) y = np.logspace(-10, 10, 120) fig = plt.figure(figsize=(3.5, 2.65), constrained_layout=True) ax = fig.gca() ax.plot(x,y) plt.xlabel('X label', fontsize=fontsize) plt.ylabel('Y label', fontsize=fontsize) # 先切换对数刻度 ax.set_yscale('log') ax.set_xscale('log') # 再统一设置刻度字体大小 ax.tick_params(axis='both', labelsize=fontsize) plt.show()
替代写法
也可以单独指定X、Y轴的刻度字体,效果相同:
# 切换对数刻度后单独设置 ax.set_yscale('log') ax.set_xscale('log') plt.xticks(fontsize=fontsize) plt.yticks(fontsize=fontsize)
这样修改后,X轴和Y轴的刻度字体大小就会保持一致了。
内容的提问来源于stack exchange,提问作者T. Silva
相关产品推荐
相关产品推荐

