如何在循环中绘制子图

时间:2020-03-18 04:30:32

标签: python pandas for-loop matplotlib subplot

如何为该循环创建一个图?

我想根据从循环中获取的i值创建一些子图。我是否需要为每个子图创建一个新的For/Loop?我该怎么做?。这是我的代码:

fig, axes = plt.subplots(nrows=4, ncols=3)
fig.subplots_adjust(hspace=0.5)
fig.suptitle('Main plots')
for i in range(1,13):
  month = [i]
  DF_sub = DF[DF['months'].isin(month)]
  out = pd.cut(DF_sub['new'], bins=[0, 0.25, 0.5, 0.75, 1], include_lowest=True)
  out_norm = out.value_counts(sort=False, normalize=True)
  ax = out_norm.plot.bar(rot=0, color="b", figsize=(6,4))
  plt.title('Subplot -' + str(i))

到目前为止,我只得到了最后一个,但是我在循环中缺少了previos i-s值

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要将ax参数传递给plot.bar,以指定应绘制从axes返回的plt.subplots的条形图,即:< / p>

fig, axes = plt.subplots(nrows=4, ncols=3)
fig.subplots_adjust(hspace=0.5)
fig.suptitle('Main plots')
for i in range(1,13):
    month = [i]
    ax = axes[i - 1]
    DF_sub = DF[DF['months'].isin(month)]
    out = pd.cut(DF_sub['new'], bins=[0, 0.25, 0.5, 0.75, 1], include_lowest=True)
    out_norm = out.value_counts(sort=False, normalize=True)
    out_norm.plot.bar(rot=0, color="b", figsize=(6,4), ax=ax)
    plt.title('Subplot -' + str(i))

如果不传递ax参数,则条形图将自动绘制在当前活动的轴上,除非另外设置,否则它是最近创建的轴。