plot函数的功能

plot函数是matplotlib中最常见的绘图函数,作用是以x为自变量y为因变量绘制的带结点标记的线条或以x,y为坐标的坐标点(Plot y versus x as lines and/or markers)。
下面通过实例简单演示plot函数的功能。
根据下图可知,plot函数可以绘制带结点标记的线,也可以线和标记点任选其一。
plot函数相当于根据y=f(x)关系,先以x,y为坐标绘制结点,然后用直线连接结点。
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221)
# 带标记点的线
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], marker='o')
plt.subplot(222)
# 只有线,没有标记点
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.subplot(223)
# 没有线,只有标记点
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'o')
plt.subplot(224)
# 绘制y=sin(x)线
x = np.arange(-4,4,0.05)
y = np.sin(x)
plt.plot(x, y)

plt.show()

plot函数中x,y参数的基本取值

plot函数的基本调用签名为plot([x], y, [fmt], *, data=None, **kwargs)
x,y参数即为线条结点或坐标点的x,y坐标。x,y参数取值非常灵活,这也是plot函数的一大特色。
x,y参数可以是标量,也可以是类似数组的数据结构(列表,numpy数组,pandas dataframe等),通常为1维数组,数组的维度最好一致。

import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221)
# xy为标量
plt.plot(1, 2, marker='o')
plt.subplot(222)
# xy为列表
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], marker='o')
plt.subplot(223)
# xy为numpy数组
x = np.arange(-4,4,0.5)
y = np.sin(x)
plt.plot(x, y)
plt.subplot(224)
# xy在第一维度上必须一致
plt.plot([1, 2, 3, 4], [[1], [4], [9],[16]], 'o')

plt.show()

plot函数中x参数的默认值

根据plot函数调用签名可知x参数是可选的,默认值为range(len(y))
下面的案例中x参数省略了,根据下图可知4个结点的x坐标为0,1,2,3,符合range(len([1, 2, 3, 4]))的取值。
在这里插入图片描述

import matplotlib.pyplot as plt

# 只有y参数,x默认为range(len(y))
plt.plot([1, 2, 3, 4],marker='o')
plt.show()

plot函数中xy为带标签的数据

plot函数的基本调用签名为plot([x], y, [fmt], *, data=None, **kwargs)

带标签的数据可以理解为可以用data['i']方式访问的数据,可以是字典、pandas dataframe、numpy数组等。这时xy参数的即为data参数值对应的标签数据。

下面以字典为例简单说明如何使用带标签的数据。
在这里插入图片描述

import matplotlib.pyplot as plt
# d为带标签的数据
d = {'x': [1, 2, 3], 'y': [1, 2, 3]}
# x,y参数分别为d['x'],d['y'],data参数为d
plt.plot('x', 'y', data=d, marker='o')
plt.show()

对于dataframe来说,假设有一个表格,其中有很多列,每一个列有一个标签。当我们想使用其中的两列作图的时候,将表格整体传入,只要指定了标签,plot函数就会帮自动把这两列取出来作图。

plot函数绘制多组数据

plot函数绘制多组数据有三种方法:

  • 多次调用plot函数
    例如:
    plot(x1,y1)
    plot(x2,y2)

  • plot函数中调用多组xy参数
    例如:plot(x1,y1,x2,y2)

  • plot函数中使用2维数组作为xy参数

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

x1 = [1, 2, 3]
y1 = [1, 2, 3]
x2 = [4, 5, 6]
y2 = [4, 5, 6]

plt.figure(figsize=(9, 3.1))
# 多次调用plot函数
plt.subplot(131)
plt.plot(x1, y1)
plt.plot(x2, y2)
# 传递多组xy参数
plt.subplot(132)
plt.plot(x1, y1, x2, y2)
# 传递2维数组为xy参数,第1列为x,其余列为y
plt.subplot(133)
x = np.array([[0, 1, 2, 3], 
              [3, 4, 5, 6], 
              [6, 7, 8, 9], 
              [9, 10, 11, 12]])
plt.plot(x[:, 0], x[:, 1:])

plt.tight_layout()
plt.show()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐