matplotlib柱状图(条形图)-显示两组柱状图

说明

显示如下图:

关键

需要计算两组柱子的 x 坐标:

  • 先定义 x 坐标的初始值
  • 然后让 第一组 柱子的 x 坐标 左移 半个宽度
  • 然后让 第二组 柱子的 x 坐标 右移 半个宽度

移动半个宽度的目的

让 x 轴的 刻度 显示在 两个柱子的中间位置

代码


import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['Microsoft YaHei']

# x 轴标签
labels = ['1月', '2月', '3月', '4月', '5月', '6月']
barwidth = 0.4  # 柱子宽度

# x轴的刻度
x = range(len(labels))
x1 = []  # 23年柱子的x坐标
x2 = []  # 24年柱子的x坐标
for item in x:
    x1.append(item - barwidth/2)  # 23年x坐标,左移半个宽度,目的是为了让x轴刻度显示在两个柱子的中间
    x2.append(item + barwidth/2)  # 24年x坐标,右移半个宽度,目的是为了让x轴刻度显示在两个柱子的中间

# 23年柱子高度
heights = [120, 200, 150, 80, 70, 110]
# 绘制23年柱子
plt.bar(x1, heights, width=barwidth, label="2023年")

# 24年柱子高度
heights = [180, 100, 350, 180, 170, 210]
# 绘制24年柱子
plt.bar(x2, heights, width=barwidth, label='2024年')

# 设置x轴刻度标签
plt.xticks(x, labels=labels)

plt.title("2023-2024年上半年销量")
# 设置图例位置
plt.legend(loc='upper right')

# 显示窗口,必须写
plt.show()

原文出处:/show_1GW1gxD8Ox2.html