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

控制Pandas绘图布局:如何将多幅绘图整合到单个图形中?

控制Pandas多图布局的实用方法

我来帮你搞定把多个Pandas绘图整合到同一个图形里的布局问题!下面是两种最常用的灵活方案,你可以根据需求选择:


方法一:用Matplotlib子图网格手动精准控制

这是自由度最高的方式,能精确调控每行每列的子图数量、尺寸和排列:

步骤拆解:

  1. 导入Matplotlib的pyplot模块(Pandas绘图底层依赖它);
  2. 创建指定行列数的子图网格,同时设置整体图形的大小;
  3. 把所有DataFrame放进一个列表,方便批量循环处理;
  4. 逐个将每个DataFrame的图画到对应的子图上;
  5. 调整布局避免元素重叠,隐藏多余的空白子图(如果有的话)。

完整代码示例:

import pandas as pd
import matplotlib.pyplot as plt

# 批量创建你的11个DataFrame
dfs = []
for _ in range(11):
    lst = [1,2,3,4,5,6]
    dfs.append(pd.DataFrame(lst))

# 创建3行4列的子图网格,整体尺寸设为15x10(可按需调整)
fig, axes = plt.subplots(nrows=3, ncols=4, figsize=(15, 10))

# 将二维的子图数组展平成一维,方便循环遍历
flat_axes = axes.flatten()

# 循环绘制每个DataFrame的图到对应子图
for idx, (df, ax) in enumerate(zip(dfs, flat_axes)):
    df.plot(ax=ax, title=f'Plot {idx+1}', legend=False)  # 关闭图例避免拥挤

# 隐藏多余的第12个空白子图
for ax in flat_axes[len(dfs):]:
    ax.axis('off')

# 自动调整子图间距,避免标题、坐标轴标签重叠
plt.tight_layout()
plt.show()

方法二:用Pandas自带参数快速布局

如果你的需求相对简单,也可以直接用Pandas绘图的内置参数快速实现:

代码示例:

import pandas as pd
import matplotlib.pyplot as plt

# 同样批量创建DataFrame列表
dfs = []
for i in range(11):
    lst = [1,2,3,4,5,6]
    dfs.append(pd.DataFrame(lst).rename(columns={0: f'Dataset {i+1}'}))

# 合并所有DataFrame为一个多列的大DataFrame
combined_df = pd.concat(dfs, axis=1)

# 用Pandas的subplots参数绘制,指定3行4列的布局
combined_df.plot(subplots=True, layout=(3,4), figsize=(15,10), legend=False)
plt.tight_layout()
plt.show()

注意:

这种方法需要先把所有DataFrame合并成一个多列的DataFrame,适合所有图类型一致的场景,代码更简洁但灵活性不如第一种方法。


小提示:plt.tight_layout()是调整布局的利器,能自动优化子图间距;如果需要更精细的控制,还可以用plt.subplots_adjust(left=..., right=..., hspace=..., wspace=...)手动设置边距和间距。

内容的提问来源于stack exchange,提问作者Artur Müller Romanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:11:06