使用双Y轴绘图时无法通过plt.xticks旋转xticks的问题
双Y轴图表中x轴刻度旋转无效的解决办法
当使用twinx()创建双Y轴后,plt.xticks(rotation=45)失效的核心原因是:此时当前活跃的绘图轴是你创建的第二个轴(ax2),而x轴的刻度实际上由第一个轴(ax)控制,全局的plt.xticks()默认作用于当前活跃轴,自然无法改变x轴刻度的旋转角度。
解决方法很直接,直接针对原始轴ax来设置x轴刻度的旋转:
修改后的完整代码
plt.figure() ax = sns.boxplot( data=df, x='x', y='y', ) ax2 = ax.twinx() sns.scatterplot( x='x', y='y', ax=ax2, data=df2, legend=False, ) plt.tight_layout() sns.despine(offset=10, trim=True, bottom=False, right=False) # 直接操作原始轴ax的x刻度旋转 ax.tick_params(axis='x', rotation=45) # 也可以用另一种写法:ax.set_xticklabels(ax.get_xticklabels(), rotation=45) plt.show()
补充说明
双Y轴图表中两个轴共享x轴,但x轴的所有显示属性(包括刻度旋转、标签样式等)都由最初创建的那个轴(也就是第一个调用绘图函数生成的ax)管理。通过twinx()生成的第二个轴仅负责右侧Y轴的内容,无权修改x轴的属性,因此必须直接操作原始轴才能调整x轴刻度。
内容的提问来源于stack exchange,提问作者The Nightman
相关产品推荐
相关产品推荐

