Python散点图问题:图例、tight_layout为何仅作用于单个子图?
问题原因
调用plt.xticks()、plt.legend()这类全局plt函数时,它们默认只对当前活跃的子图(即最后创建的axis[1])生效,所以第一个子图未被应用设置。
优化实现方式
不需要重复复制代码,更高效的方式是通过遍历子图批量配置:
figure, axis = plt.subplots(1,2,figsize=(9,7)) x2 = ['A','B','C'] Y1 = [90,80,100] Y2 = [70,100,200] # 绘制两个散点子图 axis[0].scatter(x2,Y1, c='pink', label='salary') axis[1].scatter(x2,Y2, c='orange', label='overtime') # 遍历所有子图,统一设置x轴标签旋转并添加图例 for ax in axis: ax.tick_params(axis='x', rotation=45) # 设置x轴标签旋转45度 ax.legend() # 为每个子图单独添加对应图例 # tight_layout作用于整个画布,只需调用一次 plt.tight_layout() plt.show()
补充说明
tick_params()是面向子图对象的设置方法,比全局plt.xticks()更精准,能指定作用于单个子图- 每个子图的图例需要单独添加,因为两个子图的label不同;如果是共享图例,也可以在画布层面统一添加,但这里每个子图有独立图例,所以遍历添加更合理
tight_layout()是针对整个figure的布局调整,放在所有子图设置完成后调用一次即可
内容的提问来源于stack exchange,提问作者pythonmd661
相关产品推荐
相关产品推荐

