导入模块
import numpy as np import matplotlib.pyplot as plt
设置成中文
plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False
数据准备
x = np.arange(3) y1 = np.array([2.04, 1.57, 1.63]) y2 = np.array([1.69, 1.61, 1.64]) y3 = np.array([4.65, 4.99, 4.94]) y4 = np.array([3.39, 2.33, 4.10]) error1 = [0.16, 0.08, 0.107] error2 = [0.27, 0.14, 0.14] error3 = [0.34, 0.32, 0.29] error4 = [0.23, 0.23, 0.39] bar_width = 0.2
plt.bar(x, y1, bar_width)
:绘制第一组柱状图,x表示柱子的位置,y1表示柱子的高度,bar_width表示柱子的宽度。
plt.bar(x + bar_width, y2, bar_width)
:绘制第二组柱状图,通过将x的值加上一个bar_width,实现将柱子偏移一定距离。
plt.bar(x + 2 * bar_width, y3, bar_width)
:绘制第三组柱状图,同样通过将x的值加上两个bar_width,实现柱子的偏移。
plt.bar(x + 3 * bar_width, y4, bar_width)
:绘制第四组柱状图,通过将x的值加上三个bar_width,实现柱子的偏移。
plt.bar(x, y1, bar_width) plt.bar(x + bar_width, y2, bar_width) plt.bar(x + 2 * bar_width, y3, bar_width) plt.bar(x + 3 * bar_width, y4, bar_width)
x表示柱子的位置,y1表示柱子的高度,yerr表示误差范围,capsize表示误差线顶部和底部横杠的长度,elinewidth表示误差线的线宽,fmt表示误差线的样式,这里使用逗号和黑色的点线。
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt=',k') plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt=',k') plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt=',k') plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt=',k')
设置x轴刻度标签,其中x表示刻度位置,通过将x加上1.5倍的bar_width实现标签与柱子的对应关系,["春季", "夏季", "秋季"]表示每个刻度标签的名称。
plt.xticks(x + 1.5 * bar_width, ["春季", "夏季", "秋季"]) plt.show()