2.10.2----Python 数据可视化

实例 10 :4 个树种不同季节的细根生物量

细根生物量反映了根系从土壤中吸收水分和养分的能力,是植物地下部分碳汇集能力的
重要体现。不同树种细根生物量存在差异性,各树种细根生物量在不同季节间差异较为明显。
假设某大学分别于春季、夏季、秋季对马尾松、樟树、杉木、桂花 4 个树种进行观察,并记
录了不同树种的细根生物量,具体如表 2-9 所示。
根据表 2-9 的数据,将“季节”一列的数据作为 x 轴的刻度标签,将其他列的数据作为

y 轴的数据,绘制马尾松、樟树、杉木、桂花的细根生物量的误差棒图,具体代码如下。

In [26]:
# 10_fine_root_biomass
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
x = np.arange(3)
y1 = np.array([2.04, 1.57, 1.63])
y2 = np.array([1.69, 1.61, 1.64])
y3 = np.array([4.65, 4.99, 4.94])
y4 = np.array([3.39, 2.33, 4.10])
# 指定测量偏差
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width = 0.2
# 绘制柱形图
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, align="center",
   tick_label=[" 春季 ", " 夏季 ", " 秋季 "])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
# 绘制误差棒 : 横杆大小为 3, 线条宽度为 3, 线条颜色为黑色 , 数据点标记为像素点
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt='k,')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3,
elinewidth=2, fmt='k,')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3,
elinewidth=2, fmt='k,')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3,
elinewidth=2, fmt='k,')
plt.show()
运行程序,效果如图 2-24 所示。
图 2-24 中, x 轴代表季节, y 轴代表细根生物量,蓝色、橙色、绿色、红色的柱形依次
代表马尾松、樟树、杉木、桂花,柱形上方的黑色短线代表误差棒。由图 2-24 可知,杉木
的细根生物量最多,说明杉木吸收水分和养分的能力最强 ;樟树的细根生物量最少,说明樟
树吸收水分和养分的能力最弱。
注意:
本章所介绍的简单图表(雷达图除外)除了可以使用 pyplot 模块的绘图函数绘制,还可
以通过 Axes 类中与绘图函数同名的方法进行绘制。例如,pyplot 模块的 bar() 函数与 Axes 类
的 bar() 方法都可以绘制柱形图,它们的参数几乎相同(self 除外)。由于本章设计的实例相对

比较简单,因此所有的实例都采用 pyplot 模块的绘制函数实现。

2.11 本章小结
本章主要介绍了如何使用 matplotlib 的绘图函数绘制简单的图表,包括折线图、柱形图
或堆积柱形图、条形图或堆积条形图、堆积面积图、直方图、饼图或圆环图、散点图或气泡
图、箱形图、雷达图、误差棒图。希望大家通过学习本章的内容,能够掌握绘图函数的用法,

并可以使用这些函数绘制简单的图表,从而为后续的学习打好扎实的基础。

2.12 习题
一、填空题

1.plot() 函数会返回一个包含多个    类对象的列表。

2.常见的    包括堆积面积图、堆积柱形图和堆积条形图。
3.pyplot 绘制的直方图默认有    个矩形条。
二、判断题
1.pyplot 只能使用 errorbar() 函数绘制误差棒图。(  )
2.pyplot 可以使用 barh() 函数绘制堆积条形图。(  )
3.pyplot 绘制的箱形图默认不显示异常值。(  )
三、选择题
1.下列函数中,可以快速绘制雷达图的是(  )。
A.bar()
B.barh()
C.hist()
D.polar()
2.当 pyplot 调用 barh() 函数绘图时,可以通过哪个参数设置图表的刻度标签?(  )
A.width
B.height
C.tick_label
D.align
3.请阅读下面一段代码 :
plt.bar(x, y1, tick_label=["A", "B", "C", "D"])
plt.bar(x, y2, bottom=y1, tick_label=["A", "B", "C", "D"])
以上代码中 bar() 函数的 bottom 参数的作用是(  )。
A.将后绘制的柱形置于先绘制的柱形下方
B.将后绘制的柱形置于先绘制的柱形上方
C.将后绘制的柱形置于先绘制的柱形左方
D.将后绘制的柱形置于先绘制的柱形右方
4.下列选项中,程序运行的效果为圆环图的是(  )。
A.
import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
plt.pie(data, labels=pie_labels)
plt.show()
B.
import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
plt.pie(data, radius=1.5, labels=pie_labels)
plt.show()
C.
import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
plt.pie(data, radius=1.5, explode=[0, 0.2, 0, 0, 0, 0],labels=pie_labels)

plt.show()

D.
import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
plt.pie(data, radius=1.5, wedgeprops={'width': 0.6},labels=pie_labels)
plt.show()
5.关于使用 boxplot() 函数绘制的箱形图,下列描述正确的是(  )。
A.箱形图中异常值对应的符号默认为星号
B.箱形图只能垂直摆放,无法水平摆放
C.箱形图默认显示箱体
D.箱形图默认不会显示异常值
四、编程题
1.已知实验中学举行了高二期中模拟考试,考试后分别计算了全体男生、女生各科的
平均成绩,结果如表 2-10 所示。

 按照以下要求绘制图表 :

(1)绘制柱形图。柱形图的 x 轴为学科, y 轴为平均成绩。
(2)绘制堆积柱形图。堆积柱形图的 x 轴为学科, y 轴为平均成绩。
2.拼多多作为互联网电商的一匹黑马,短短几年内用户规模已经超过 3 亿。2019 年 9
月拼多多平台对所有子类目的销售额进行了统计,结果如表 2-11 所示。

猜你喜欢

转载自blog.csdn.net/qq_43416206/article/details/132262619