繁体   English   中英

在 for 循环生成的一个图形上绘制多个图形

[英]Plotting multiple graphs on one figure generated from for loop

我有一个数据框字典,我正在使用下面的代码为字典中的每个数据框生成一个堆积条形图。 该代码按预期打印每个堆叠的条形图(每个图表在笔记本中一个接一个并在另一个下方),但我希望它在一个图形上打印每个图表,例如 4 行 3 列。

for i, key in enumerate(d):
    plt.rcParams["figure.figsize"] = (5,3)
    d[key].plot(kind = 'barh', width= 0.85, stacked = True, color = ['limegreen','gold', 'orange', 'red'])
    plt.legend(bbox_to_anchor = (1.05, 1.025), title = "Categories")
    plt.xlabel('Cumulative Percent')
    plt.gca().xaxis.set_major_formatter(mtick.PercentFormatter())
    plt.ylabel('Data Stream')
    plt.gca().invert_yaxis()
    plt.title(f'{key}')    
plt.show()

使用子图:

# sample data
df = pd.DataFrame(
    {f"col_{i}": np.random.randint(0,100, 50) for i in range(12)}
)


fig, axs = plt.subplots(4, 3, figsize=(25,20))
all_axs = axs.ravel()
for i, c in enumerate(df.columns):    
  ax = df[c].plot(kind = 'barh', 
                  width= 0.85, 
                  stacked = True, 
                  color = ['limegreen','gold', 'orange', 'red'], 
                  ax=all_axs[i])
  ax.legend(title = "Categories")
  ax.set_xlabel("Cumulative Percent")
  ax.set_ylabel("Data Stream")
  ax.xaxis.set_major_formatter(mtick.PercentFormatter())
  ax.invert_yaxis()

fig.tight_layout()

输出: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM