Python中设置xticks字体大小无效,仅Dec2019标签生效问题求助
解决Matplotlib中日期次刻度字体大小不生效的问题
你遇到的问题核心是:plt.xticks(fontsize=26)仅对x轴主刻度(也就是"Dec2019"标签)生效,而日期数字(02、09、16等)是matplotlib自动生成的次刻度,默认不会被plt.xticks()修改。
解决方法
通过获取绘图的轴对象(Axes),使用tick_params()方法同时指定主、次刻度的字体大小:
- 先捕获pandas绘图返回的Axes对象,这是精准控制刻度的关键
- 用
tick_params()设置which='both',同时覆盖主、次刻度的字体设置
修改后的完整代码
final = reduce(lambda left,right: pd.merge(left,right, left_index=True, right_index=True), dfs_filtered) # 捕获绘图的轴对象 ax = final.resample('D').mean().plot(figsize=(12,9), marker='.') # 设置图例、轴标签与标题 ax.legend(etik, fontsize=13) ax.set_ylabel('Daily mean concentration $(μg/m^3)$', fontsize=13) ax.set_xlabel('Day', fontsize=13) ax.set_title(f"{list(aerosols.keys())[n]} ({ABBR[list(aerosols.keys())[n]]})", fontsize=13) # 同时设置x、y轴的主/次刻度字体大小 ax.tick_params(axis='x', which='both', labelsize=26) ax.tick_params(axis='y', which='both', labelsize=26) # 其他绘图范围与边距设置 ax.set_xlim(pd.Timestamp('2019-12-01'), pd.Timestamp('2019-12-31')) ax.set_ylim(bottom=0) ax.margins(x=0) plt.show()
关键说明
tick_params()的which参数可选值:'major'(仅主刻度)、'minor'(仅次刻度)、'both'(两者都修改),这里选'both'就能覆盖所有刻度标签- 使用Axes对象的
ax.set_xxx方法替代plt全局方法,能更精准控制绘图元素,避免全局设置冲突
内容的提问来源于stack exchange,提问作者Dimitris Tsiaousidis
相关产品推荐
相关产品推荐

