如何用For循环优化2×3子图的Python绘制代码?
优化2×3子图绘制代码:用循环消除重复逻辑
你的原代码里重复创建各地区数据子集、重复调用绘图函数和设置标题,完全可以通过循环遍历+统一处理来简化,既减少冗余,后期修改也更方便。
优化后的代码
import seaborn as sns import matplotlib.pyplot as plt # 初始化画布和子图 fig, axes = plt.subplots(2, 3, figsize=(15, 8), sharey=True) fig.tight_layout(h_pad=4) # 定义要展示的地区列表,顺序对应子图位置(从上到下、从左到右) regions = ['Africa', 'Asia', 'Europe', 'Middle East', 'Oceania', 'The Americas'] # 把二维的axes数组展平成一维,方便循环遍历 flat_axes = axes.flatten() # 遍历地区和对应的子图轴 for region, ax in zip(regions, flat_axes): # 筛选当前地区的数据 region_data = df[df.Region == region] # 绘制直方图+KDE,统一设置参数 sns.histplot(ax=ax, data=region_data, x="Life Expectancy Female", kde=True, stat='probability').set(xlabel=None) # 设置子图标题 ax.set_title(region) # 设置整体标题和布局调整,顺便修正原代码里的拼写错误 fig.suptitle('Histogram and KDE of Life Expectancy of Women', fontsize=15) plt.subplots_adjust(top=0.9)
关键优化点
- 把所有地区名称整理成一个列表,避免逐个创建变量存储子集数据
- 用
axes.flatten()把二维子图数组转成一维,不用手动写axes[0,0]这类索引 - 通过
zip配对地区和子图轴,一次循环完成所有绘图和标题设置 - 所有重复的参数(比如
kde=True、stat='probability')只写一次,后期修改只需改一处 - 修正了原代码中整体标题的拼写错误,保证内容准确
内容的提问来源于stack exchange,提问作者SHOGANAI
相关产品推荐
相关产品推荐

