添加次坐标轴后Matplotlib plt参数未生效,求问题排查
问题根源
你遇到的问题是因为调用plot(secondary_y=True)时,pandas会重置x轴的显示配置,覆盖了之前用plt全局函数设置的参数。而且plt的全局方法默认作用于当前活跃的坐标轴,添加次轴后活跃轴切换成了次坐标轴,导致主坐标轴的设置压根没生效。
修复代码
直接抓牢主坐标轴对象,所有配置都通过这个对象来操作,同时明确让次轴关联主轴,就不会乱覆盖了:
# 画堆叠柱状图,同时拿到主坐标轴对象 ax_main = tableOfSubZeroSellsHH.plot(use_index=True, kind='bar', stacked=True, title='figure', figsize=(14,7)) # 直接通过主轴对象设置参数,不用全局plt ax_main.set_ylabel('MW') ax_main.tick_params(axis='x', rotation=90) # 设置x轴标签旋转 ax_main.xaxis.set_major_locator(plt.MaxNLocator(30)) # 控制x轴刻度数量 ax_main.grid(axis='y') # 显示y轴网格 # 在主轴上添加次坐标轴折线图,指定ax参数关联主轴 ax_sec = meteoFiltered['MeteoWindDA'].plot(ax=ax_main, secondary_y=True, style='--', color='black', linewidth=2.0) ax_sec.set_ylabel('MeteoWind')
核心说明
- 用
ax_main存储主坐标轴对象,所有主轴的配置都通过它的方法完成,避免全局plt的不确定性。 - 添加次轴时必须加
ax=ax_main,告诉pandas基于已有的主轴创建次轴,不会重置x轴配置。 - 用
MaxNLocator替代locator_params,能更精准控制x轴刻度数量,避免被后续操作覆盖。
内容的提问来源于stack exchange,提问作者K.Best
相关产品推荐
相关产品推荐

