You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为每个柱状图创建独立绘图画布

解决方法

方案1:每个柱状图单独一个独立画布

每次绘制前调用plt.figure()创建新画布,这样每个柱状图会显示在单独窗口中:

# 绘制Running time柱状图
plt.figure()
plt.bar(values, stats_list_running, width, label='Running time')
plt.xlabel('Tests')
plt.ylabel('Values')
plt.title('Running time')
plt.legend()
plt.show()

# 绘制No. of activations柱状图
plt.figure()
plt.bar(values, stats_list_noofact, width, label='No. of activations')
plt.xlabel('Tests')
plt.ylabel('Values')
plt.title('No. of activations')
plt.legend()
plt.show()

# 绘制Avg. strength of activations柱状图
plt.figure()
plt.bar(values, stats_list_avgstract, width, label='Avg. strength of activations')
plt.xlabel('Tests')
plt.ylabel('Values')
plt.title('Avg. strength of activations')
plt.legend()
plt.show()

# 绘制Avg. length of activations柱状图
plt.figure()
plt.bar(values, stats_list_avglenact, width, label='Avg. length of activations')
plt.xlabel('Tests')
plt.ylabel('Values')
plt.title('Avg. length of activations')
plt.legend()
plt.show()

# 绘制Avg. time between activations柱状图
plt.figure()
plt.bar(values, stats_list_avgtimbet, width, label='Avg. time between activations')
plt.xlabel('Tests')
plt.ylabel('Values')
plt.title('Avg. time between activations')
plt.legend()
plt.show()

方案2:将所有柱状图放在同一个画布的子图中

如果想用subplot布局但之前操作错误,正确做法是先创建子图对象,再在对应子图上调用绘图方法:

# 创建1行5列的子图布局,fig为画布,axes为子图对象列表
fig, axes = plt.subplots(nrows=1, ncols=5, figsize=(20, 5))

# 第一个子图
axes[0].bar(values, stats_list_running, width, label='Running time')
axes[0].set_xlabel('Tests')
axes[0].set_ylabel('Values')
axes[0].set_title('Running time')
axes[0].legend()

# 第二个子图
axes[1].bar(values, stats_list_noofact, width, label='No. of activations')
axes[1].set_xlabel('Tests')
axes[1].set_title('No. of activations')
axes[1].legend()

# 第三个子图
axes[2].bar(values, stats_list_avgstract, width, label='Avg. strength of activations')
axes[2].set_xlabel('Tests')
axes[2].set_title('Avg. strength of activations')
axes[2].legend()

# 第四个子图
axes[3].bar(values, stats_list_avglenact, width, label='Avg. length of activations')
axes[3].set_xlabel('Tests')
axes[3].set_title('Avg. length of activations')
axes[3].legend()

# 第五个子图
axes[4].bar(values, stats_list_avgtimbet, width, label='Avg. time between activations')
axes[4].set_xlabel('Tests')
axes[4].set_title('Avg. time between activations')
axes[4].legend()

# 调整子图间距避免重叠
plt.tight_layout()
plt.show()

你之前用subplot出错,是因为误在plt.bar返回的BarContainer对象上调用subplot方法——subplot是用来创建子图的,必须先创建子图对象,再在子图上执行绘图操作。

内容的提问来源于stack exchange,提问作者Martaer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:50:26