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
相关产品推荐
相关产品推荐

