我有200种产品,我想绘制time vs parameter
图。我想出了一个代码,可以绘制20种产品的图形并将其显示在一个窗口中。
我想知道是否可以在10个不同的窗口中绘制200个图形作为子图,每个窗口每个包含20个图形。
我的代码
grouped = dataset.groupby('product_number')
ncols = 4
nrows = int(np.ceil(grouped.ngroups/40))
fig, axes = plt.subplots(figsize=(12,4), nrows = nrows, ncols = ncols)
for (key, ax) in zip(grouped.groups.keys(), axes.flatten()):
grouped.get_group(key).plot(x='TimeElapsed', y='StepID', ax=ax, sharex = True, sharey = True)
ax.set_title('product_number=%d'%key)
ax.legend()
plt.show()
此代码为我提供了一个包含20个子图的窗口,如下所示
答案 0 :(得分:1)
您只需要将现有代码包装在for循环中,即可遍历每个包含20个子图的不同图形。然后,这里的技巧是使用索引(20*i)+key
修改键值以获取所有200个键。对于i=0
(第一位数字),您将获得1、2、3,... 19、20。对于i=1
(第二位数字),您将获得21、22、23,... 39、40等。
下面是代码的修改版本。我没有数据,所以无法尝试。如果它不起作用,请告诉我。正如@DavidG指出的那样,plt.show()
应该在for循环之外。
grouped = dataset.groupby('product_number')
ncols = 4
nrows = int(np.ceil(grouped.ngroups/40))
for i in range(10):
fig, axes = plt.subplots(figsize=(12,4), nrows = nrows, ncols = ncols)
for (key, ax) in zip(grouped.groups.keys(), axes.flatten()):
grouped.get_group((20*i)+key).plot(x='TimeElapsed', y='StepID', ax=ax, sharex = True, sharey = True)
ax.set_title('product_number=%d'%((20*i)+key))
ax.legend()
plt.show() # Mind the indentation