Pyplot 教程
关于pylot接口的介绍。
pyplot 简介
matplotlib.pyplot 是命令样式函数的集合,使matplotlib像MATLAB一样工作。 每个pyplot函数对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一些线条,用标签装饰图形等。
在matplotlib.pyplot中,各种状态在函数调用中保留,以便跟踪当前图形和绘图区域等内容,并且绘图函数指向当前轴(请注意“轴”在此处以及在大多数位置 文档是指图形的轴部分,而不是多个轴的严格数学术语。
注意: pyplot API通常不如面向对象的API灵活。您在此处看到的大多数函数调用也可以作为Axes对象中的方法调用。 我们建议您浏览教程和示例以了解其工作原理。
使用pyplot生成可视化非常快速:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()
<Figure size 640x480 with 1 Axes>
您可能想知道为什么x轴的范围是0-3,y轴的范围是1-4。如果为plot()命令提供单个列表或数组,则matplotlib假定它是一系列y值,并自动为您生成x值。由于python范围以0开头,因此默认的x向量与y具有相同的长度,但从0开始。因此x数据为 [0,1,2,3]。
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
[<matplotlib.lines.Line2D at 0x1de069a2a20>]
格式化绘图的样式
对于每对x,y对的参数,有一个可选的第三个参数,它是指示绘图的颜色和线型的格式字符串。格式字符串的字母和符号来自MATLAB,您可以将颜色字符串与线型字符串连接起来。默认格式字符串为“b-”,为蓝色实线。例如,要用红色圆圈绘制上述内容,您将发出:
#plt.plot(x,y,format_string,**kwargs)
#x轴数据,y轴数据,format_string控制曲线的格式字串
#format_string 由颜色字符,风格字符,和标记字符
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()
有关线型和格式字符串的完整列表,请参阅 plot() 文档。 上例中的 axis() 命令采用 [xmin, xmax, ymin, ymax] 列表并指定轴的视口。
如果matplotlib仅限于使用列表,那么数字处理将毫无用处。通常,您将使用numpy数组。实际上,所有序列都在内部转换为numpy数组。 下面的示例说明了使用数组在一个命令中绘制具有不同格式样式的多行。
import numpy as np
# 每隔200ms均匀采样一次
t = np.arange(0., 5., 0.2)
# 红色的破折号,蓝色的正方形和绿色的三角形
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
使用关键字字符串绘图
在某些情况下,您可以使用允许您使用字符串访问特定变量的格式的数据。例如,使用 numpy.recarray 或pandas.DataFrame。
Matplotlib允许您使用data关键字参数提供此类对象。如果提供,那么您可以生成包含与这些变量对应的字符串的图。
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数。
c:表示的是颜色,也是一个可选项。默认是蓝色’b’,表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等,感觉还没用到过现在不解释了。但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列。可以是他们的2维数组(只有一行)。
marker:表示的是标记的样式,默认的是’o’。
cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap
norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认为colors.Normalize。
vmin,vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化。
alpha:实数,0-1之间。
linewidths:也就是标记点的长度。
data = {
'a': np.arange(50),
'c': np.random.randint(0, 50, 50),
'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.