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

Matplotlib barh()创建条形图详解(附带实例)

如需创建条形图,可以使用 pyplot 模块中的 barh() 函数或 Axes 对象的 barh() 方法。可以将条形图看作水平方向的柱形图,从函数或方法的名称可以看出,它们是在 bar 的结尾添加了一个字母 h,该字母表示水平方向。

Matplotlib barh()创建基本条形图

barh() 函数或 barh() 方法的用法与 bar() 函数或 bar() 方法类似,只不过第一个参数表示 y 轴坐标,第二个参数表示条形的宽度,即 x 轴的坐标。

下面的代码是使用 Axes 对象的 barh() 方法创建条形图:
import matplotlib.pyplot as plt

y = range(1, 7)
width = [20, 50, 90, 60, 30, 70]
fig, ax = plt.subplots()
ax.barh(y, width)
ax.xaxis.set_ticks(range(0, 101, 10))
plt.show()
程序创建的条形图如下图所示:


图 1 条形图

Matplotlib barh()创建堆积条形图

为 barh() 函数或 barh() 方法指定 left 参数,将创建堆积条形图。

堆积条形图中的两组数据具有相同的 y 轴坐标,其中一组数据的 x 轴坐标由 left 参数指定,该组数据位于每个条形的最左侧,另一组数据位于每个条形的右侧。

下面的代码使用两组数据创建堆积条形图:
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = 'SimSun'
y = range(1, 7)
x1 = [20, 50, 90, 60, 30, 70]
x2 = [10, 30, 70, 20, 80, 10]
fig, ax = plt.subplots()
ax.barh(y, x1, label='产品一')
ax.barh(y, x2, left=x1, label='产品二')
ax.legend(loc='upper right')
plt.show()
程序创建的堆积条形图如下图所示:


图 2 堆积条形图

Matplotlib barh()创建并列条形图

创建并列条形图的关键是第二组数据的每个条形的 y 轴坐标,需要通过对第一组数据的 y 轴坐标与该组数据的每个条形的高度进行求和来得到。

下面的代码是使用两组数据创建并列条形图。每组数据的条形的高度都是 0.4,第二组数据的 y 轴坐标由第一组数据的 y 轴坐标加上 0.4 后计算得到的,这样可以确保第二组条形会紧挨在第一组条形之后。
import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.rcParams['font.sans-serif'] = 'SimSun'

y1 = range(1, 7)
y2 = [y + 0.4 for y in y1]
x1 = [20, 50, 90, 60, 30, 70]
x2 = [10, 30, 70, 20, 80, 10]

fig, ax = plt.subplots()
ax.barh(y1, x1, height=0.4, label='产品一')
ax.barh(y2, x2, height=0.4, label='产品二')
ax.legend(loc='lower right')
plt.show()
程序创建的并列条形图如下图所示:


图 3 并列条形图

相关文章