# 绘制堆积面积图
# 使用 stackplot() 绘制堆积面积图
# 使用pyplot 的 stackplot() 函数可以快速绘制堆积面积图,stackplot() 函数的语法格式如下所示 :
stackplot (x, y, labels=(), baseline='zero', data=None, *args, **kwargs)
# 该函数常用参数的含义如下。
# · x :表示 x 轴的数据,可以是一维数组。
· y :表示 y 轴的数据,可以是二维数组或一维数组序列。
· labels :表示每组折线及填充区域的标签。
· baseline :表示计算基线的方法,包括 'zero'、 'synm'、 'wiggle'和 'weighted_wiggl'。其中,'zero'表示恒定零基线,即简单的堆积图 ;'sym'表示对称于零基线 ; 'wiggle' 表示最小化平方斜率的总和 ;'weighted_wiggle'表示执行相同的操作,但权重用于说明每层的大小。
# 例如,使用 stackplot() 函数绘制由 3 条折线及下方填充区域堆叠的堆积面积图,代码如下。
In [12]:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(6)
y1 = np.array([1,4,3,5,6,7])
y2 = np.array([1,3,4,2,7,6])
y3 = np.array([3,4,3,6,5,5])
# 绘制堆积面积图
plt.stackplot(x, y1, y2, y3)
plt.show ()
# 运行程序,效果如图 2-12 所示。
# 需要说明的是,堆积面积图按照自下而上的顺序逐个堆叠填充区域,因此先绘制的图形位于底部,后绘制的图形位于上方。
# 实例 4:物流公司物流费用统计
# 近些年我国物流行业蓬勃发展,目前已经有几千家物流公司。部分物流公司大打价格战,以更低的价格吸引更多的客户,从而抢占市场份额。现在有 A、B、C 三家物流公司,它们分别对公司去年的总物流费用进行了统计,具体如表 2-4 所示。
# 根据表 2-4 的数据,将“月份”一列的数据作为 x 轴的刻度标签,将 “A公司”“B公司”“C公司”这三列的数据分别作为y轴的数据,使用 stackplot()b函数绘制 A、B、C物流公司物流费用的堆积面积图,具体代码如下。
In [13]:
# 04_logistics__cost_statisties
import numpy as np
import matplotlib.pyplot as plt
x = np.arange (1, 13)
y_a = np.array([198, 215, 245, 222, 200, 236, 201, 253, 236, 200, 266, 290])
y_b = np.array([203, 236, 200, 236, 269, 216, 298, 333, 301, 349, 360, 368])
y_c = np.array([185, 205, 226, 199, 238, 200, 250, 209, 246, 219, 253, 288])
# 绘制堆积面积图
plt.stackplot(x, y_a, y_b, y_c)
plt.show()
# 图 2-13 中,x轴代表月份,y轴代表物流费用,底部的蓝色区域代表A公司的物流费用,中间的橙色区域代表B公司的物流费用,顶部的绿色区域代表C公司的物流费用。
← 绘制条形图或堆积条形图 绘制直方图 →