[英]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.