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

Matplotlib stem()创建棉棒图(非常详细)

棉棒图也称为棒棒糖图或火柴杆图,它由杆和头两个部分组成,可将其看作柱形图的一种变体。

如需创建棉棒图,可以使用 pyplot 模块中的 stem() 函数或 Axes 对象的 stem() 方法。

创建基本棉棒图

棉棒图的方向分为垂直和水平两种,默认创建的棉棒图是垂直方向的。

对于垂直方向的棉棒图来说,stem() 函数或 stem() 方法的第一个参数 locs 表示棉棒的水平位置,即 x 轴坐标,第二个参数 heads 表示棉棒“头”部的位置,也可以将其看作棉棒的高度,即 y 轴坐标。其他参数都是关键字参数。如果是水平方向的棉棒图,则两个参数的含义正好相反。

下面的代码是使用 Axes 对象的 stem() 方法创建下图所示的棉棒图:


图 1 棉棒图
import matplotlib.pyplot as plt

locs = range(1, 7)
heads = [20, 50, 90, 60, 30, 70]

fig, ax = plt.subplots()
ax.stem(locs, heads)
plt.show()

更改棉棒图的样式

使用 linefmt 参数可以设置棉棒图“杆”部的线型和颜色,该参数的值由表示线型和颜色的字符组成。使用 markerfmt 参数可以设置棉棒图“头”部的形状和颜色,该参数的值由表示形状和颜色的字符组成。

下面的代码将棉棒图“杆”部的线型设置为虚线,将“头”部的形状设置为大菱形:
import matplotlib.pyplot as plt

locs = range(1, 7)
heads = [20, 50, 90, 60, 30, 70]

fig, ax = plt.subplots()
ax.stem(locs, heads, linefmt='--', markerfmt='D')
plt.show()
效果如下图所示:


图 2 更改棉棒图的“杆”和“头”的样式

使用 orientation 参数可以改变棉棒图的方向,分为垂直和水平两种,默认为垂直方向。下面的代码是将棉棒图改为水平方向:
import matplotlib.pyplot as plt

locs = range(1, 7)
heads = [20, 50, 90, 60, 30, 70]

fig, ax = plt.subplots()
ax.stem(locs, heads, orientation='horizontal')
plt.show()
效果如下图所示:


图 3 将棉棒图改为水平方向

相关文章