You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python Matplotlib绘制指定结构的分组柱状图

如何使用Python Matplotlib绘制指定结构的分组柱状图

嗨,我来帮你搞定这个分组柱状图的需求!用Matplotlib就能轻松实现你要的「5个组,每组3根柱子」的效果,我把完整的实现代码和思路给你理清楚:

首先咱们得先导入需要的库,然后把你已有的labelsdata放进去,核心是通过计算柱子的位置来实现分组效果,具体代码和解释如下:

import matplotlib.pyplot as plt
import numpy as np

# 你提供的标签和数据集
labels = ["Label 1", "Label 2", "Label 3", "Label 4", "Label 5"]
data = {
    "Data 1": [12, 20, 17, 16, 32],
    "Data 2": [12, 20, 17, 16, 32],
    "Data 3": [12, 20, 17, 16, 32]
}

# 设定单根柱子的宽度,选0.25是因为3根柱子总宽度0.75,组间会留空隙,视觉效果更舒服
bar_width = 0.25

# 生成每个组的中心x轴位置,对应5个标签组
x = np.arange(len(labels))

# 分别绘制每个数据系列的柱子:通过加减宽度让3根柱子在同一组内排列
plt.bar(x - bar_width, data["Data 1"], width=bar_width, label="Data 1")
plt.bar(x, data["Data 2"], width=bar_width, label="Data 2")
plt.bar(x + bar_width, data["Data 3"], width=bar_width, label="Data 3")

# 把x轴刻度放在每个组的中心,确保标签和分组对应正确
plt.xticks(x, labels)

# 给图表加标题和轴标签,你可以根据自己的需求修改文字
plt.title("分组柱状图示例")
plt.xlabel("标签组")
plt.ylabel("数值")

# 显示图例,方便区分不同数据系列
plt.legend()

# 展示最终的图表
plt.show()

我再给你划几个关键点:

  • 柱子宽度的选择:如果觉得分组太挤或太松,直接调整bar_width就行,比如改成0.3也没问题
  • 位置计算逻辑:x是每个组的中心,通过加减宽度让同组的柱子挨在一起,不会和其他组的柱子重叠
  • 如果以后你的数据系列数量变了(比如不是3个),可以用循环简化代码,不用手动写多次plt.bar,比如:
# 适配任意数量数据系列的循环写法
bar_width = 0.25
x = np.arange(len(labels))
data_list = list(data.items())
for idx, (series_name, series_values) in enumerate(data_list):
    # 自动计算每个系列的柱子位置
    bar_pos = x + (idx - len(data_list)//2) * bar_width
    plt.bar(bar_pos, series_values, width=bar_width, label=series_name)

这样不管你有2个还是5个数据系列,都能自动生成对应的分组效果!

备注:内容来源于stack exchange,提问作者user25770979

火山引擎 最新活动