Python数据可视化第 3 讲:matplotlib绘图之函数plot()

1. plot 函数介绍

plot() 函数是 matplotlib 的 pyplot 模块中最常用的绘图函数。其调用格式如下:

plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明

  • x,y:即数据点的水平/垂直坐标。x 值是可选的,默认为 range(len(y)),即 [0, ···, N-1],N 等于 y 中数据的数量 。通常,这些参数是一维数组。它们也可以是标量或二维(在这种情况下,列表示单独的数据集)。
  • fmt:可选格式字符串,用于定义基本格式(如颜色、标记和线型),例如红色圆圈的“ro”。格式字符串只是快速设置基本行属性的缩写,相应的设置都可以由关键字参数控制,如‘ro’,若由关键字参数控制则为 color=‘red’,marker=‘o’。
  • data:数据索引对象,可选参数,带有标签数据的对象。如果给定,请提供要在 x 和 y 中绘制的标签名称。
  • kwargs:Line2D 属性,可选参数,kwargs 用于指定线标签(用于自动图例)、线宽、抗锯齿、标记面颜色等特性。例子 label=‘line 1’。

如下所示是 plot() 的基本用法:

plot(x, y)        # 使用默认线型和颜色,基于 x 和 y 所提供坐标数据绘图
plot(x, y, 'bo')  # 使用蓝色实心点,基于 x 和 y 所提供坐标数据绘图
plot(y)           # 使用 x 作为索引数组 0..N-1 绘制 y
plot(y, 'r+')     # 使用 x 作为索引数组 0..N-1 绘制 y,同时线条红色加粗

除了上面的方法,还可以将 Line2D 特性用作关键字参数,从而对绘图外观进行更多控制。线属性和 fmt 可以混合。以下两个调用可产生相同的结果:

# 使用fmt参数设置样式:绿色、点标记为‘O’、点之间连线为虚线;线宽为 2,点标记大小为 12
plot(x, y, 'go--', linewidth=2, markersize=12)
# 使用Line2D特性设置样式:绿色、点标记为‘O’、点之间连线为虚线;线宽为 2,点标记大小为 12
plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)

2. plot 函数绘图举例

2.1 绘制一个基本点线图

如下代码,简单而原始的绘图方式,与之前文章介绍的不同,这里没有创建画布(Figure)和坐标系(Axes),这是因为 plot() 函数在执行时可以默认创建一张画布和一个坐标系。这种方式很简单,但也牺牲了一些特性,比如无法实现一张画布上绘制多图。

import matplotlib.pyplot as plt

# 准备绘图数据
data = [1, 2, 3, 4]
# 绘图并展示
plt.plot(data)
plt.show()

在上面的例子中,plt.plot(data)指定了所绘图形的纵坐标 [1, 2, 3, 4],横坐标未给出,则默认为[0, ···, N-1]。执行结果:

Python数据可视化第 3 讲:matplotlib绘图之函数plot()_第1张图片

2.2 绘制一个点线图并设置样式

如下代码,使用 Line2D 特性,设置绘图样式:绿色、点标记为实心点、点之间连线为虚线。

import matplotlib.pyplot as plt

# step1:准备画图的数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [21, 27, 29, 32, 29, 28, 35, 39, 49]
# step2:手动创建一个figure对象,相当于一个空白的画布
figure = plt.figure()
# step3:在画布上添加一个坐标系,标定绘图位置
axes1 = figure.add_subplot(1, 1, 1)
# step4:画图,设置线条颜色、线型、点标记符
axes1.plot(x, y, color='green', linestyle='dashed', marker='o')
# step5:展示
plt.show()

上面代码执行结果:

Python数据可视化第 3 讲:matplotlib绘图之函数plot()_第2张图片

2.3 一个坐标系中绘制多个图线

在实际应用中,常常遇到需要在一个坐标系中绘制多条图线的情况。相较于绘制一条图线,绘制多条图线并不复杂,如下代码示例:1.为了绘制两条图线,我们准备了两组数据;2.使用 fmt 参数设置图线样式,'go–'表示绿色、实心点、虚线,'r*-'表示红色、星型点、实线。

import matplotlib.pyplot as plt

# step1:准备两组画图数据
x1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y1 = [21, 27, 29, 32, 29, 28, 35, 39, 49]
x2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y2 = [11, 13, 17, 12, 16, 8, 6, 19, 20]
# step2:手动创建一个figure对象,相当于一个空白的画布
figure = plt.figure()
# step3:在画布上添加一个坐标系,标定绘图位置
axes1 = figure.add_subplot(1, 1, 1)
# step4:画图,设置线条颜色、线型、点标记符
axes1.plot(x1, y1, 'go--', x2, y2, 'r*-')
# step5:展示
plt.show()

上面代码执行结果:

Python数据可视化第 3 讲:matplotlib绘图之函数plot()_第3张图片

2.4 为图线设置基本属性

一张完整的图片,通常需要具备:标题(title)、x轴标签(x-label)、y轴标签(y-label)、文本(text)、图例(legend)、背景网格(grid)等属性,设置方式如下例子所示:

# 设置基本信息
axes1.set_xlabel('time(s)')  # x轴标签
axes1.set_ylabel('velocity(m/s)')  # y轴标签
axes1.set_title("title:example")  # 图标标题
axes1.text(6, 37, 'vt-demo')  # 文本,(6,37)设置文本在图片中的坐标
axes1.legend(['vt'])  # 图例
axes1.grid(linestyle='--', linewidth=1)  # 背景网格
axes1.annotate('local max', xy=(4, 32), xytext=(4.5, 34),
               arrowprops=dict(facecolor='black', shrink=0.05))  # 注解

为了直观的呈现效果,在此给出一个完整的示例:

import matplotlib.pyplot as plt

# step1:准备画图的数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [21, 27, 29, 32, 29, 28, 35, 39, 49]
# step2:手动创建一个figure对象,相当于一个空白的画布
figure = plt.figure()
# step3:在画布上添加一个坐标系,标定绘图位置
axes1 = figure.add_subplot(1, 1, 1)
# step4:图片基本设置
# 设置线条颜色、线型、点型
axes1.plot(x, y, 'ro--')
# 设置基本信息
axes1.set_xlabel('time(s)')  # x轴标签
axes1.set_ylabel('velocity(m/s)')  # y轴标签
axes1.set_title("title:example")  # 标题
axes1.text(6, 37, 'vt-demo')  # 文本
axes1.legend(['vt'])  # 图例
axes1.grid(linestyle='--', linewidth=1)  # 背景网格
axes1.annotate('local max', xy=(4, 32), xytext=(4.5, 34),
               arrowprops=dict(facecolor='black', shrink=0.05))  # 注解
# step5:展示
plt.show()

上面代码执行结果:

Python数据可视化第 3 讲:matplotlib绘图之函数plot()_第4张图片

3. plot 样式参数详解

3.1 Markers

即绘图坐标点的样式,如前面介绍的:’*’ 代表星型,'o’代表圆形,'v’代表三角形。更多样式如下列表:

字符 描述
‘-’ 实线
‘–’ 虚线
‘-.’ 点线
‘:’ 点虚线
‘.’
‘,’ 像素
‘o’ 圆形
‘v’ 朝下的三角形
‘^’ 朝上的三角形
‘<’ 朝左的三角形
‘>’ 朝右的三角形
‘1’ 朝下的三角旗
‘2’ 朝上的三角旗
‘3’ 朝左的三角旗
‘4’ 朝右的三角旗
‘s’ 正方形
‘p’ 五角形
‘*’ 星型
‘h’ 1号六角形
‘H’ 2号六角形
‘+’ +号标记
‘x’ x号标记
‘D’ 钻石形
‘d’ 小版钻石形
‘I’ 垂直线形
‘_’ 水平线行

设置示例:

# 设置方式1: 使用关键字设置
plot(x, y, marker='o')
# 设置方式2: 使用fmt字符串设置
plot(x, y, 'o')

3.2 Line Styles

即绘图线条的样式,共有四种:’-’ 达标实线;’–’ 代表虚线;’-.’ 代表点划线;’:’ 代表圆点虚线。设置示例:

# 设置方式1: 使用关键字设置
plot(x, y, linestyle='--')
# 设置方式2: 使用fmt字符串设置
plot(x, y, '--')

3.3 Colors

即设置绘图点线颜色,共其中,如下所示:

字符 颜色
‘b’ 蓝色
‘g’ 绿色
‘r’ 红色
‘c’ 青色
‘m’ 品红
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

设置示例:

# 设置方式1: 使用关键字设置
plot(x, y, color='red')
# 设置方式2: 使用fmt字符串设置
plot(x, y, 'r')

你可能感兴趣的:(Python数据可视化)