首页 > 编程笔记 > Python笔记 阅读:19

Matplotlib bar():绘制条形图(附带实例)

条形图或柱形图是一种图表或图形,它显示带有矩形条的分类数据,其高度或长度与它们所代表的值成比例。可以垂直或水平绘制条形。条形图显示了离散类别之间的比较。图表的一个轴显示要比较的特定类别,另一个轴表示测量值。

Matplotlib API 提供了 bar() 函数,可以在 MATLAB 样式中以及面向对象的 API 中使用。与 axis 对象一起使用的 bar() 函数使用大小为(x-width=2;x+width=2;bottom;bottom+height)来绑定矩形创建条形图。

bar() 函数的格式如下:
ax.bar(x, height, width, bottom, align)

【实例】显示一所学院提供的各种课程的学生人数。
import matplotlib.pyplot as plt
import numpy as np
import math
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [22, 18, 34, 28, 14]
ax.bar(langs, students)
plt.show()
运行程序,效果如下图所示:


图 1 条形图

我们可以通过使用条形的厚度和位置来绘制多个条形图。数据变量包含三个系列的四个值。以下代码将显示四个条形图中的三个。这些条的厚度为 0.35 个单位。每个条形图将从前一个移动 0.5 个单位。数据对象是一个多元图,包含过去 4 年在工程学院的三个分支中通过的学生数量。
data = [[30, 25, 50, 20],
        [40, 23, 51, 17],
        [35, 22, 45, 19]]

X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.35, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)
plt.show()
运行程序,效果如下图所示:


图 2 绘制多个条形图

堆积条形图是堆叠表示彼此顶部的不同组的条形图。结果为条形图的高度显示组的组合结果。

pyplot.bar() 函数的可选 bottom 参数指定条的起始值。它不是从零运行到一个值,而是图像从底部到顶的值。第一次调用 pyplot.bar() 绘制蓝色条形图。第二次调用 pyplot.bar() 绘制红色条形图,蓝色条形图的底部位于红色条形图的顶部。
N = 5
menMeans = (21, 36, 30, 36, 28)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N)    # 组 x 的位置
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width, bottom=menMeans, color='b')
ax.set_ylabel('分数')
ax.set_title('按组和性别分数')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['男', '女'])
plt.show()
运行程序,效果如下图所示:


图 3 堆积条形图

相关文章