Python Matplotlib plot函数用法:生成折线图

Matplotlib 的用法非常简单,对于最简单的折线图来说,程序只需根据需要给出对应的 X 轴、Y 轴数据,调用 pyplot 子模块下的 plot() 函数即可生成简单的折线图。

假设分析《C语言基础》这本教程从 2013 年到 2019 年的销售数据,此时可考虑将年份作为 X 轴数据,将图书各年销量作为 Y 轴数据。程序只要将 2013~2019 年定义成 list 列表作为 X 轴数据,并将对应年份的销量作为 Y 轴数据即可。

例如,使用如下简单的入门程序来展示这套教程从 2013 年到2019 年的销售数据。
import matplotlib.pyplot as plt

# 定义2个列表分别作为X轴、Y轴数据
x_data = ['2013', '2014', '2015', '2016', '2017', '2018', '2019']
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
# 第一个列表代表横坐标的值,第二个代表纵坐标的值
plt.plot(x_data, y_data)
# 调用show()函数显示图形
plt.show()
上面程序中,第 7 行代码调用 plot() 函数根据 X 轴、Y 轴数据来生成折线图,第 9 行代码则调用 show() 函数将折线图显示出来。

运行上面程序,可以看到生成如图 1 所示的简单折线图。

简单折线图
图 1 简单折线图

如果在调用 plot() 函数时只传入一个 list 列表,该list列表表的数据将作为 Y 轴数据,那么 Matplotlib 会自动使用 0、1、2、3 作为 X 轴数据。例如,将上面程序中的第 7 行代码改为如下形式:

plt.plot(y_data)

再次运行该程序,将看到如图 2 所示的结果。

使用默认的X 轴数据
图 2 使用默认的X 轴数据

plot() 函数除了支持创建具有单条折线的折线图,也支持创建包含多条折线的复式折线图,只要在调用 plot() 函数时传入多个分别代表 X 轴和 Y 轴数据的 list 列表即可。例如如下程序:
import matplotlib.pyplot as plt

x_data = ['2013', '2014', '2015', '2016', '2017', '2018', '2019']
# 定义2个列表分别作为两条折线的Y轴数据
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]
# 传入2组分别代表X轴、Y轴的数据
plt.plot(x_data, y_data, x_data, y_data2)
# 调用show()函数显示图形
plt.show()
上面程序在调用 plot() 函数时,传入了两组分别代表 X 轴、Y 轴数据的 list 列表,因此该程序可以显示两条折线,如图 3 所示。

包含多条折线的复式折线图
图 3 包含多条折线的复式折线图

也可以通过多次调用 plot() 函数来生成多条折线。例如,将上面程序中第 8 行代码改为如下两行代码,程序同样会生成包含两条折线的复式折线图:

plt.plot(x_data, y_data)
plt.plot(x_data, y_data2)

在调用 plot() 函数时还可以传入额外的参数来指定折线的样子,如线宽、颜色、样式等。例如如下程序:
import matplotlib.pyplot as plt

x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
# 定义2个列表分别作为两条折线的Y轴数据
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]
# 指定折线的颜色、线宽和样式
plt.plot(x_data, y_data, color = 'red', linewidth = 2.0, linestyle = '--')
plt.plot(x_data, y_data2, color = 'blue', linewidth = 3.0, linestyle = '-.')
# 调用show()函数显示图形
plt.show()
上面第 8、9 两行代码分别绘制了两条折线,并通过 color 指定折线的颜色,linewidth 指定线宽,linestyle 指定折线样式。

在使用 linestyle 指定折线样式时,该参数支持如下字符串参数值:
  • -:代表实线,这是默认值。
  • --:代表虚线。
  • ·:代表点钱。
  • -.:代表短线、点相间的虚钱。

运行上面程序,可以看到如图 4 所示的折线图。

设置了折线的折线图
图 4 设置了折线的折线图