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

如何用Matplotlib绘制指定样式的百分比柱状图(附数据)

用Matplotlib实现指定柱状图

首先修正数据中的错误:原countries列表里的"DR"和"Kongo"是两个独立元素,会导致与resources、percentages长度不匹配,需合并为"DR Kongo"。

以下是完整实现代码:

import matplotlib.pyplot as plt

# 修正后的数据
countries = ["Bolivien","Argentinien","US","Chile","Australien","China","Deutschland","DR Kongo","Kanada","Mexiko","Tschechien","Serbien","Weitere"]
resources = [21,20,12,11,7.9,6.8,3.2,3,2.9,1.7,1.3,1.2,6]
percentages = [21.43,20.41,12.24,11.22,8.06,6.94,3.27,3.06,2.96,1.73,1.33,1.22,6.12]

# 创建画布和坐标轴
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制柱状图,高度对应百分比
bars = ax.bar(range(len(countries)), percentages)

# 设置x轴刻度为国家名称,旋转45度避免重叠
ax.set_xticks(range(len(countries)))
ax.set_xticklabels(countries, rotation=45, ha='right')

# 在每个柱子上方标注resources数值
for bar, res in zip(bars, resources):
    height = bar.get_height()
    ax.text(bar.get_x() + bar.get_width()/2., height,
            f'{res}',
            ha='center', va='bottom')

# 设置y轴标签和标题
ax.set_ylabel('百分比 (%)')
ax.set_title('各国资源占比')

# 调整布局,防止标签被截断
plt.tight_layout()

# 显示图表
plt.show()

关键步骤说明:

  • 柱状图绘制:用plt.bar()生成柱子,x轴用索引值避免字符串直接作为x轴的问题,后续再替换为国家名称。
  • 刻度调整:通过set_xticks()和set_xticklabels()设置x轴刻度,旋转45度并右对齐,避免长名称重叠。
  • 数值标注:遍历每个柱子,获取其位置和高度,用ax.text()在柱子顶部居中标注对应的resources数值。
  • 布局优化:tight_layout()自动调整图表元素位置,防止x轴标签被截断。

内容的提问来源于stack exchange,提问作者simon.moebs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:42:50