也许标题有误导性,否则有人会告诉我重复。但是,经过许多(许多)小时的浏览,我什么都没找到。我想绘制多个散点图,然后将它们合并为一些nrow和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 的元素数量一样多)。
因为打印输出的数量很多,所以我想在这些打印输出上创建子图,以使最终图像对眼睛更容易。
那么我该如何获取所有这些散点图,并将它们合并为一些nrow和ncols的子图?
答案 0 :(得分:1)
假设您有4行和10列,则可以执行类似的操作(只是其中一种方法)。在这里flatten
会向您返回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'])