强基初中数学&学Python——第244课 数字和数学第三方模块Matplotlib之三:Pyplot教程(1)

  pyplot接口简介。想了解Matplotlib的工作原理,请参阅快速入门指南;要明晰用户API的使用方法,参阅Matplotlb应用程序接口(APIs):

https://matplotlib.org/stable/users/explain/api_interfaces.html#api-interfaces

pyplot简介

  matplotlib.pyplot是一组使matplotlib像MATLAB一样工作的函数。每个pyplot函数都会对图表进行一些更改:例如,创建图表、在图表中创建绘图区域、在绘图区域中绘制一些线、用标签装饰图表等。matplotlib.pyplot:

https://matplotlib.org/stable/api/pyplot_summary.html#module-matplotlib.pyplot

  由于matplotlib.pyplot中保留函数调用过程中的各种状态,因此它可以跟踪当前图表和绘图区域等情况,绘图函数指向当前图表域(axes)——请注意,此处和文档中大多数地方的“axes”是指图表的一部分(part of a figure),而不是多于一个轴(axis)的严格数学术语。

part of a figure

https://matplotlib.org/stable/tutorials/introductory/quick_start.html#figure-parts

注意:

  隐式pyplot API(参数调用)通常比较简洁,但不如显式API(函数调用)灵活。在本教程的大多数函数调用也可以作为Axes对象的方法调用。我们建议你浏览教程和示例以了解其工作原理。请参阅Matplotlib应用程序接口(APIs),明晰用户API的使用方法。

  用pyplot快速生成可视化效果图:

· 

· 

· 

· 

import matplotlib.pyplot as pltplt.plot([1, 2, 3, 4])plt.ylabel('some numbers')plt.show()

 

  这里有个问题,为什么x轴的范围是0-3,而y轴的范围从1-4呢?如果只给plot函数只提供一个列表或数组参数,matplotlib会假设它是一个y值序列,并自动生成相应的x值序列。因为python范围(range)默认是以0开头的,所以默认的x向量也是以0开头;然而x向量长度必须要与y相同,因此,x数据为[0,1,2,3]。plot函数:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

  plot是一个通用函数,可以接受任意数量的参数。例如,要绘制x向量与y向量的关系图线,可以写如下代码:

· 

· 

· 

import matplotlib.pyplot as pltplt.plot([1, 2, 3, 4], [1, 4, 9, 16])plt.show()

 

格式化线条式样

  对于每对xy参数,都有一个可选的第三个参数,它是指定绘图颜色和线型的格式字符串。格式字符串的字母和符号沿自MATLAB,可以将颜色字符串与线型字符串合并。默认格式字符串为“b-”,它是一条蓝色实线。例如,要用红色圆点绘制上面图线,可以写如下代码:

· 

· 

· 

· 

import matplotlib.pyplot as pltplt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')plt.axis([0, 6, 0, 20])plt.show()

 

  线条样式和格式字符串的完整列表,请参见plot文档。上面示例中的axis函数的参数是[xminxmaxyminymax]的列表,从而规定了axes的视口(viewport,即绘图区域)。

  如果matplotlib仅限于处理列表,那么它对于数字处理几乎没用。通常,使用的是numpy数组。事实上,所有序列都在内部转换为numpy数组后再使用。下面的示例说明了使用数组在一个函数调用中绘制具有不同格式样式的多条线。

· 

· 

· 

· 

· 

· 

· 

· 

· 

import matplotlib.pyplot as pltimport numpy as np
# evenly sampled time at 200ms intervalst = np.arange(0., 5., 0.2)
# red dashes, blue squares and green trianglesplt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')plt.show()