Matplotlib多子图xticks刻度标签45度旋转实现相关问题
问题原因说明
你原来的代码未生效的核心原因是plt.xticks()仅会获取当前活跃子图(默认是最后创建的右下角子图)的x轴刻度标签,无法覆盖所有4张子图。
正确实现方案
方案1:使用plt.setp批量设置
这是最贴合你原有写法思路的实现,仅需修改plt.setp的作用对象即可:
import matplotlib.pyplot as plt # 创建2*2子图 fig, ax = plt.subplots(2, 2, figsize=(10,5), sharex=True, sharey=True) # 统一设置所有子图x刻度标签旋转45度 plt.setp([a.get_xticklabels() for a in ax.flat], rotation=45, ha='right') # 展示 plt.show()
参数说明:
ax.flat:将二维的子图数组展平为一维迭代器,遍历所有子图ha='right':设置刻度标签右对齐,避免标签旋转后和刻度位置错位,属于可选但推荐添加的参数
方案2:遍历子图调用tick_params设置
这种写法可读性更强,便于后续扩展其他刻度属性:
import matplotlib.pyplot as plt fig, ax = plt.subplots(2, 2, figsize=(10,5), sharex=True, sharey=True) # 遍历所有子图设置x轴刻度 for current_ax in fig.axes: current_ax.tick_params(axis='x', rotation=45) plt.show()
内容的提问来源于stack exchange,提问作者Arturo Sbr
相关产品推荐
相关产品推荐

