【问题标题】:plotting multiple figures in python在python中绘制多个数字
【发布时间】:2019-06-20 08:15:24
【问题描述】:

也许标题具有误导性,或者有人会告诉我这是重复的。然而,经过很多(很多)小时的浏览,我什么也没找到。我想绘制多个散点图并将它们合并为一些 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 的元素数量一样多)。

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

那么我怎样才能获取所有这些散点图并将它们合并到一些 nrows 和 ncols 的子图中?

【问题讨论】:

  • 你定义的没有找几个小时,否则你很容易从 Matplotlib 中找到子图。如果你只是在 google 上搜索“Rows and columns subplots Matplotlib”,你不仅会得到官方的例子,还会得到几个堆栈溢出的答案。所以也许再试一次
  • @Bazingaa 我尝试了很多东西(但肯定不是所有东西),我一直在寻找几个小时。无论如何,我已经看到你引用的链接。但是,您似乎需要写出列表包含的所有帧,我想避免这种情况。请您详细说明一下吗?
  • 例如,如果您有一堆像上面这样的数据框(我的意思是在我的回答中),并且您想创建一个子图而不像您发布的链接那样明确地写出所有这些数据框怎么办?
  • 你想要多少行和多少列?
  • 说 nrwos=4, ncols=10

标签: python matplotlib subplot


【解决方案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'])

【讨论】:

  • 虽然出于教学原因,我想问一下你是怎么想到的?
  • @mayer_vietoris:只有多年的经验和使用 matplotlib 并探索它的功能。阅读有关 matplotlib 的更多堆栈溢出答案。例如,您可以启动 here 以更深入地了解 matplotlib 提供的不同选项
  • 似乎没有什么比经验更丰富的了:)。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2020-09-26
  • 2021-07-07
  • 2020-05-04
  • 1970-01-01
  • 2018-05-29
  • 2021-12-27
相关资源
最近更新 更多