如何将多组boxplot箱线图合并为一张可视化图片?
修改代码实现多属性箱线图合并为一张图
可以通过子图网格布局实现所有属性箱线图合并到一张图中,以下是调整后的代码:
import matplotlib.pyplot as plt import seaborn as sns import math # 设定子图的列数,可根据需求调整(比如2、3) cols = 2 num_list = Final_dataset.columns.values.tolist() rows = math.ceil(len(num_list) / cols) # 根据属性数量自动计算行数 # 创建子图网格 fig, axs = plt.subplots(rows, cols, figsize=(cols*6, rows*4)) # 调整figsize适配子图数量 for i, column in enumerate(num_list): # 获取当前子图的位置 ax = axs.flat[i] # 在指定子图上绘制箱线图 sns.boxplot(x="label", y=column, data=Final_dataset, palette='Set2', ax=ax) ax.set_title(f'Boxplot of {column}') # 设置子图标题 ax.tick_params(axis='x', rotation=45) # 可选:旋转x轴标签避免重叠 # 隐藏多余的子图(当属性数量不是cols的整数倍时) for j in range(i+1, rows*cols): axs.flat[j].axis('off') # 调整子图间距,避免标签重叠 plt.tight_layout() # 保存整张图 plt.savefig('all_boxplots.png') plt.show()
关键改动说明:
- 用
plt.subplots()创建统一的子图网格,替代循环中重复创建新图的操作 - 循环时通过
axs.flat[i]指定当前箱线图绘制的子图位置 - 添加子图标题并可选旋转x轴标签,提升可读性
- 使用
plt.tight_layout()自动调整子图间距,避免元素重叠 - 最后统一保存整张图,而非循环保存单张图
内容的提问来源于stack exchange,提问作者Hiss
相关产品推荐
相关产品推荐

