在 python 中绘制多个图形

plotting multiple figures in python

也许标题有误导性,或者有人会告诉我这是重复的。然而,经过许多(许多)小时的浏览后,我什么也没找到。我想绘制多个散点图并将它们合并为一些 nrows 和 ncols 的子图?

假设我们有以下内容:

new_list=[]

for j in list(set(lala)):

df1 = df[df['Date'] == j]
df1.drop('Date', axis = 1, inplace = True)

df2 = df1.groupby('Z').mean()
df2.reset_index(inplace = True)

new_list.append(df2)

for j in range(0, len(new_list)):
plt.figure(figsize=(6, 6), dpi=80)
plt.scatter(new_list[j]['X'],new_list[j]['Y'])

让我稍微解释一下它的作用;我创建了一个名为 new_list 的列表,其中包含在 for 循环中构造的数据帧(您可以忽略该构造,因为我要求的是全局方法)。然后,我为new_list[=中的每个数据框打印散点图(总共与new_list的元素个数一样多) 25=]。

因为打印输出的数量很多,我想从这些打印输出中创建子图,使最终图像更容易被人看到。

那么我怎样才能把所有这些散点图合并成一些 nrows 和 ncols 的子图呢?

假设你有 4 行和 10 列,你可以这样做(只是一种方法)。这里 flatten returns 是一个包含 40 个轴对象 (4 x 10) 的列表,其中顺序跨行:第一行先四列,然后第二行四列,依此类推。

fig, axes = plt.subplots(nrows=4, ncols=10)

for i, ax in enumerate(axes.flatten()):
    ax.scatter(new_list[i]['X'],new_list[i]['Y'])

如果你不想使用enumerate,或者你也可以使用下面的

fig, axes = plt.subplots(nrows=4, ncols=10)
ax = axes.flatten()

for j in range(0, len(new_list)):
    ax[j].scatter(new_list[j]['X'],new_list[j]['Y'])