第二章、使用 matplotlib 绘制简单图表

学习目标
★掌握 matplotlib 的绘图函数,并能绘制简单的图表
第 1 章使用 matplotlib 快速绘制了一个图表,让读者真切体会到 matplotlib 的强大之处。
matplotlib 之所以能成为如此优秀的绘图工具,离不开其丰富的 API,使用这些 API 可以轻松
绘制常见的图表,使数据可视化变得轻而易举。本章将带领大家了解 matplotlib.pyplot 的绘图
函数,并使用这些函数绘制简单的图表,包括折线图、柱形图或堆积柱形图、条形图或堆积

条形图、堆积面积图、直方图、饼图或圆环图、散点图或气泡图、箱形图、雷达图、误差棒图。

2.1 绘制折线图
2.1.1 使用 plot() 绘制折线图
使用 pyplot 的 plot() 函数可以快速绘制折线图。plot() 函数的语法格式如下所示 :
plot(x, y, fmt, scalex=True, scaley=True, data=None, label=None,
* args, ** kwargs)
该函数常用参数的含义如下。
· x :表示 x 轴的数据。
· y :表示 y 轴的数据。
·fmt :表示快速设置线条样式的格式字符串。
·label :表示应用于图例的标签文本。
plot() 函数会返回一个包含 Line2D 类对象(代表线条)的列表。
使用 pyplot 的 plot() 函数还可以绘制具有多个线条的折线图,通过以下任意一种方式均
可以完成。
(1)多次调用 plot() 函数来绘制具有多个线条的折线图,示例代码如下 :
plt.plot(x1, y1)
plt.plot(x2, y2)
(2)调用 plot() 函数时传入一个二维数组来绘制具有多个线条的折线图。例如,将二维
数组 arr 的第一行数据作为 x 轴的数据、其他行数据全部作为 y 轴的数据,代码如下。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
plt.plot(arr[0], arr[1:])
(3)调用 plot() 函数时传入多组数据来绘制具有多个线条的折线图,示例代码如下 :
plt.plot(x1, y1, x2, y2)
2.1.2 实例 1 :未来 15 天最高气温和最低气温
俗话说“天有不测风云”,说明天气是变幻莫测的。人们的生活离不开天气预报,无论 第 2 章  使用 matplotlib 绘制简单图表 023
是居家还是外出,人们都时刻关注着天气的变化,以便随时备好伞具、增减衣服,或者为出
行计划做好准备。表 2-1 是 9 月 3 日预测的北京市未来 15 天的最高气温和最低气温。 第二章、使用 matplotlib 绘制简单图表_第1张图片

第二章、使用 matplotlib 绘制简单图表_第2张图片

根据表 2-1 的数据,将“日期”这一列的数据作为 x 轴的数据,将“最高气温”和“最
低气温”两列的数据作为 y 轴的数据,使用 plot() 函数绘制反映最高气温和最低气温趋势的
折线图,具体代码如下。
In [1]:
# 01_maximum_minimum_temperatures
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(4, 19)
y_max = np.array([32, 33, 34, 34, 33, 31, 30, 29, 30, 29, 26, 23, 21, 25, 31])
y_min = np.array([19, 19, 20, 22, 22, 21, 22, 16, 18, 18, 17, 14, 15, 16, 16])
# 绘制折线图
plt.plot(x, y_max)
plt.plot(x, y_min)
plt.show()
以上代码首先导入了 matplotlib.pyplot 和 numpy 模块,分别将这两个模块重命名为 plt 和
np,其次将表 2-1 的数据分别作为 x 轴和 y 轴的数据,然后连续两次调用 plot() 函数分别绘
制了两条折线,最后调用 show() 函数进行展示。
运行程序,效果如图 2-1 所示。 第二章、使用 matplotlib 绘制简单图表_第3张图片
图 2-1 中, x 轴代表日期, y 轴代表温度,位于上方的蓝色折线和下方的橙色折线分别
代表最高温度和最低温度。由图 2-1 可知,北京市未来 15 天的最高气温和最低气温都呈现
逐步下降后反弹的趋势。
2.2 绘制柱形图或堆积柱形图
2.2.1 使用 bar() 绘制柱形图或堆积柱形图
使用 pyplot 的 bar() 函数可以快速绘制柱形图或堆积柱形图。bar() 函数的语法格式如下
所示 :
bar(x, height, width=0.8, bottom=None, align='center',
data=None, tick_label=None, xerr=None, yerr=None,
error_kw=None, ** kwargs)
该函数常用参数的含义如下。
·x :表示柱形的 x 坐标值。
·height :表示柱形的高度。
·width :表示柱形的宽度,默认为 0.8。
·bottom :表示柱形底部的 y 坐标值,默认为 0。
·align :表示柱形的对齐方式,有 'center' 和 'edge' 两个取值,其中 'center' 表示将柱形与
刻度线居中对齐 ;'edge' 表示将柱形的左边与刻度线对齐。
·tick_label :表示柱形对应的刻度标签。
·xerr,yerr :若未设为 None,则需要为柱形图添加水平 / 垂直误差棒。
·error_kw :表示误差棒的属性字典,字典的键对应 errorbar() 函数(2.10 节会介绍)的
关键字参数。

bar() 函数会返回一个 BarContainer 类的对象。BarContainer 类的对象是一个包含矩形或误

差棒的容器,它亦可以视为一个元组,可以遍历获取每个矩形条或误差棒。此外,BarContainer
类的对象也可以访问 patches 或 errorbar 属性,从而获取图表中所有的矩形条或误差棒。

例如,使用 bar() 函数绘制柱形图,代码如下。

In [2]:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y1 = np.array([10, 8, 7, 11, 13])
# 柱形的宽度
bar_width = 0.3
# 绘制柱形图
plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
plt.show()
运行程序,效果如图 2-2 所示。 第二章、使用 matplotlib 绘制简单图表_第4张图片
使用 pyplot 的 bar() 函数还可以绘制具有多组柱形的柱形图。例如,使用 bar() 函数绘制
一个具有两组柱形的柱形图,代码如下。
In [3]:
x = np.arange(5)
y1 = np.array([10, 8, 7, 11, 13])
y2 = np.array([9, 6, 5, 10, 12])
# 柱形的宽度
bar_width = 0.3
# 根据多组数据绘制柱形图
plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
plt.bar(x + bar_width, y2, width=bar_width)
plt.show()
运行程序,效果如图 2-3 所示。 第二章、使用 matplotlib 绘制简单图表_第5张图片
在使用 pyplot 的 bar() 函数绘制图表时,可以通过给 bottom 参数传值的方式控制柱形的 y
值,使后绘制的柱形位于先绘制的柱形的上方。例如,使用 bar() 函数绘制由两组柱形堆叠而
成的堆积柱形图,代码如下。
运行程序,效果如图 2-4 所示。 第二章、使用 matplotlib 绘制简单图表_第6张图片
此外,在使用 pyplot 的 bar() 函数绘制图表时可以通过给 xerr、yerr 参数传值的方式为柱
形添加误差棒,示例代码如下 :
In [5]:

# 偏差数据

error = [2, 1, 2.5, 2, 1.5]
# 绘制带有误差棒的柱形图
plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
plt.bar(x, y1, bottom=y1, width=bar_width, yerr=error)
plt.show()
运行程序,效果如图 2-5 所示。 第二章、使用 matplotlib 绘制简单图表_第7张图片

你可能感兴趣的:(Python数据可视化,matplotlib,信息可视化,fpga开发,网络协议)