Matplotlib 条形图

条形图或柱形图是一种图表或图形,它用矩形条显示分类数据,矩形条的高度或长度与其所代表的值成正比。条形图可以垂直或水平绘制。

条形图显示离散数据不同类别之间的比较。图表的一个轴显示正在比较的特定类别,另一个轴表示测量值。

Matplotlib API 提供了bar()函数用来绘制条形图。 bar() 函数语法如下

ax.bar(x, height, width, bottom, align)

参数说明:

  • x:浮点型数组,柱形图的 x 轴数据。
  • height:浮点型数组,柱形图的高度。
  • width:浮点型数组,柱形图的宽度。
  • bottom:浮点型数组,底座的 y 坐标,默认 0。
  • align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。

该函数返回一个包含所有条形的 Matplotlib 容器对象。

以下是 Matplotlib 条形图的简单示例。

import matplotlib.pyplot as plt

fig = plt.figure("迹忆客 - jiyik.com")
ax = fig.add_subplot(111)
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23, 17, 35, 29, 12]
ax.bar(langs, students)
plt.show()

图形如下

matplotlib-柱形图1

当比较多个数量和更改一个变量时,我们可能需要一个条形图,其中一个颜色的条形对应一个数量值。

我们可以通过调整条形的粗细和位置来绘制多个条形图。数据变量包含三个 Series ,每个 Series包含四个值。

看下面的示例

import numpy as np
import matplotlib.pyplot as plt

data = [[30, 25, 50, 20],
        [40, 23, 51, 17],
        [35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure("迹忆客 - jiyik.com")
ax = fig.add_subplot(111)
ax.bar(X + 0.00, data[0], color='b', width=0.25)
ax.bar(X + 0.25, data[1], color='c', width=0.25)
ax.bar(X + 0.50, data[2], color='r', width=0.25)

plt.show()

图形如下

matplotlib-多柱形图

堆叠条形图将代表不同组的条形堆叠在一起。结果条的高度显示了组的组合结果。

pyplot.bar()函数的可选底部参数允许我们指定条形的起始值。它不是从零开始的,而是从底部开始。第一次调用 pyplot.bar() 绘制青色条。第二次调用 pyplot.bar() 绘制红色条,青色条的底部位于红色条的顶部。

import numpy as np
import matplotlib.pyplot as plt

N = 5
menMeans = [20, 35, 30, 35, 27]
womenMeans = [25, 32, 34, 20, 25]
ind = np.arange(N)
width = 0.35
fig = plt.figure("迹忆客 - jiyik.com")
ax = fig.add_subplot(111)
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width, bottom=menMeans, color='c')
ax.set_ylabel('分数')
ax.set_title('分组分数对比')
ax.set_xticks(ind)
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()

图形如下

matplotlib-堆叠条形图

查看笔记

扫码一下
查看教程更方便