You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:55:26