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

Python多分布图绘制代码详解:plt.subplots与ax参数疑问解答

代码细节深度解析:Matplotlib+Seaborn多子图绘制

嘿,我来帮你把这段代码拆解得明明白白,每个细节都给你讲透~

先把完整代码贴出来方便对照:

fig_dspl, axes_dspl = plt.subplots(nrows=1, ncols=2, figsize=(9, 4))
sns.distplot(df_08['displ'], ax = axes_dspl[0])
_ = axes_dspl[0].set_title('08')
sns.distplot(df_18['displ'], ax = axes_dspl[1])
_ = axes_dspl[1].set_title('18')

第一行:专门用于创建多子图布局

没错,plt.subplots(nrows=1, ncols=2, figsize=(9, 4))就是生成多图布局的核心代码:

  • nrows=1, ncols=2:指定创建1行2列的子图网格,也就是横向排列的两个独立子图
  • figsize=(9,4):设置整个画布的尺寸,宽9英寸,高4英寸
  • 这行代码会返回两个关键对象:
    • fig_dspl:整个画布(Figure)对象,可用于调整画布级别的设置(比如保存图片、修改背景色)
    • axes_dspl:一个包含两个轴(Axes)对象的数组,每个轴对象对应一个子图,axes_dspl[0]指向第一个子图,axes_dspl[1]指向第二个子图

ax = axes_dspl[0]:指定绘图的目标子图

你已经熟悉单图模式的sns.distplot,默认情况下它会把图画在当前“活跃”的轴上。但当我们有多个子图时,就必须明确告诉Seaborn:把这个分布图画在哪个子图里!

  • ax = axes_dspl[0]就是把第一个子图的轴对象传给distplot的ax参数,这样Seaborn就会精准地把df_08['displ']的分布图画在第一个子图位置
  • 同理,ax = axes_dspl[1]就是指定把第二个分布图画在第二个子图位置

_ = axes_dspl[0].set_title('08'):设置标题+避免冗余输出

axes_dspl[0].set_title('08')的作用很直接:给第一个子图设置标题为“08”。那前面的_ =是什么意思?

  • set_title方法执行后,会返回一个Text对象(描述这个标题的底层文本对象)
  • 在交互式环境(比如Jupyter Notebook)里,如果不接收这个返回值,系统会自动打印这个Text对象,导致输出里出现冗余的代码信息
  • 用_来接收这个返回值是Python里的一个惯例:意思是“我知道这个方法有返回值,但我不需要使用它,用下划线占位就好”
  • 你完全可以写成axes_dspl[0].set_title('08'),加_ =只是为了让输出更干净,没有多余的干扰内容

内容的提问来源于stack exchange,提问作者Juncai Liu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:41:47