Matplotlib plot()创建折线图详解(附带实例)
折线图主要用于展示数据随时间的变化趋势。如需创建折线图,可以使用 pyplot 模块中的 plot() 函数或 Axes 对象的 plot() 方法。
使用 plot() 函数或 plot() 方法创建折线图时,即使只有一组数据,也可以创建折线图。当只有一组数据时,会自动将该组数据作为每个点的 y 轴坐标,这些点的 x 轴坐标默认使用从 0 开始的连续整数。例如,如果有 6 个点,则它们的 x 轴坐标依次为 0、1、2、3、4 和 5。
下面的代码是使用 Axes 对象的 plot() 方法为一组数据创建折线图:

图 1 使用一组数据创建折线图
下面的代码将为两组数据创建折线图:

图 2 使用两组数据创建折线图
下面的代码是在图表中绘制 3 条折线:

图 3 在一个图表中绘制多条折线
在 plot() 函数或 plot() 方法中指定 marker 参数,可以设置点的形状,这些形状以字符串格式作为 marker 参数的值,如下表所示。
下面的代码将 marker 参数的值设置为“o”(字母 O 的小写形式),将折线图中的各个点显示为实心圆,如下图所示:

图 4 将各个点显示为实心圆
默认情况下,各个点的形状都是实心的。如需改为空心,可以在 plot() 函数或 plot() 方法中指定 markerfacecolor 参数,并将其值设置为 w(white 的首字母),代码如下:

图 5 将各个点的形状设置为空心
如需改变各个点的大小,可以使用 markersize 参数。下面的代码将折线图中各个点的大小设置为 10 个像素:

图 6 将各个点的形状设置为空心
创建只有一条折线的折线图
折线图由多个点之间的连接线组成,每个点都有一对 x、y 坐标,所以需要两组数据。使用 plot() 函数或 plot() 方法创建折线图时,即使只有一组数据,也可以创建折线图。当只有一组数据时,会自动将该组数据作为每个点的 y 轴坐标,这些点的 x 轴坐标默认使用从 0 开始的连续整数。例如,如果有 6 个点,则它们的 x 轴坐标依次为 0、1、2、3、4 和 5。
下面的代码是使用 Axes 对象的 plot() 方法为一组数据创建折线图:
import matplotlib.pyplot as plt y = [5, 7, 3, 9, 1] fig, ax = plt.subplots() ax.plot(y) plt.show()如下图所示:

图 1 使用一组数据创建折线图
下面的代码将为两组数据创建折线图:
import matplotlib.pyplot as plt x = [1, 3, 5, 7, 9] y = [80, 20, 80, 20, 80] fig, ax = plt.subplots() ax.plot(x, y) plt.show()如下图所示:

图 2 使用两组数据创建折线图
创建包含多条折线的折线图
如需在一个图表中绘制多条折线,只需多次调用 plot() 函数或 plot() 方法。下面的代码是在图表中绘制 3 条折线:
import matplotlib.pyplot as plt x1 = [1, 3, 5, 7, 9] y1 = [60, 30, 60, 30, 60] x2 = [1, 3, 5, 7, 9] y2 = [60, 60, 60, 60, 60] x3 = [3, 4, 5, 6, 7] y3 = [30, 30, 30, 30, 30] fig, ax = plt.subplots() ax.plot(x1, y1) ax.plot(x2, y2) ax.plot(x3, y3) plt.show()如下图所示:

图 3 在一个图表中绘制多条折线
设置折线节点的样式
默认情况下,绘制的折线所连接的各个数据点与线条之间是平滑过渡的。如果希望这些数据点在折线图中明显可见,可以改变它们的样式。在 plot() 函数或 plot() 方法中指定 marker 参数,可以设置点的形状,这些形状以字符串格式作为 marker 参数的值,如下表所示。
取值 | 形状 |
---|---|
. | 点 |
, | 像素 |
o | 圆 |
* | 星号 |
+ | 加号 |
| | 竖线 |
_ | 横线 |
v | 下三角形 |
^ | 上三角形 |
< | 左三角形 |
> | 右三角形 |
1 | 下花三角形 |
2 | 上花三角形 |
3 | 左花三角形 |
4 | 右花三角形 |
8 | 八边形 |
d | 小菱形 |
D | 大菱形 |
h | 竖六边形 |
H | 横六边形 |
p | 五角星 |
P | 填充后的加号 |
s | 正方形 |
x | 叉子 |
X | 填充后的叉子 |
下面的代码将 marker 参数的值设置为“o”(字母 O 的小写形式),将折线图中的各个点显示为实心圆,如下图所示:

图 4 将各个点显示为实心圆
默认情况下,各个点的形状都是实心的。如需改为空心,可以在 plot() 函数或 plot() 方法中指定 markerfacecolor 参数,并将其值设置为 w(white 的首字母),代码如下:
import matplotlib.pyplot as plt x = [1, 3, 5, 7, 9] y = [80, 20, 80, 20, 80] fig, ax = plt.subplots() ax.plot(x, y, marker='o', markerfacecolor='w') plt.show()创建的折线图如下图所示:

图 5 将各个点的形状设置为空心
如需改变各个点的大小,可以使用 markersize 参数。下面的代码将折线图中各个点的大小设置为 10 个像素:
import matplotlib.pyplot as plt x = [1, 3, 5, 7, 9] y = [80, 20, 80, 20, 80] fig, ax = plt.subplots() ax.plot(x, y, marker='o', markersize=10) plt.show()如下图所示:

图 6 将各个点的形状设置为空心