matplotlib中subplotMatplotlib中⽂⼿册(2):Pyplot教程
这是从的英⽂⼿册中翻译过来的中⽂⼿册,由于时间仓促,浅浅词汇量有限。因此如果有哪⾥翻译的不好,请在评论区指出,谢谢。
在 Pyplot 教程中包含了五⼤部分:
1. Pyplot 简介以及⾃定义⽤户样式
2. 在绘图中会⽤到的关键字符串以及使⽤分类变量绘制图像
3. 线条属性的设置与复合图像
4. ⽂字处理(⽐如使⽤数学表达式、⽂本注释)
5. 对数轴与其他⾮线性轴
如果您喜欢Matplotlib,并且苦于寻不到中⽂⼿册的话,这个系列很适合您哦。
Pyplot 教程
这是对 pyplot 接⼝的相关说明。
Pyplot 简介
matplotlib.pyplot 是使 Matplotlib 像 MATLAB ⼀样⼯作的命令样式函数的集合。每个 pyplot 函数都会对图形进⾏⼀些更改。⽐如说创建
图形,在图形中创建绘图区域,在绘图区域中绘制⼀些线,⽤标签装饰您所绘制的图像等。
在 matplotlib.pyplot 中,函数的调⽤会保留各种状态,以便跟踪当前图形和绘图区域内的图像挂件,并将绘图函数定向到当前轴。这⾥值得
⼀提的是,这个轴指的是图形的轴部分,就是我们在第⼀章节中不断地讲到的轴,⽽不是数学意义上的轴。
注意:    pyplot API 通常不如 OO API 来的灵活轻巧。您在此处所看到的绝⼤多数的函数调⽤也可以称作是 Axes 对象中的⽅法调⽤。我们建议浏览相关教程和⽰例以使⽤ pyplot 来做数据可视化的速度⾮常快,⽐如说:
import matplotlib.pyplot as pltplt.plot([1, 2, 3, 4])plt.ylabel('some numbers')plt.show()
您可能很好奇为什么 X 轴的范围是 $x\in [0,3]$,⽽且 Y 轴的范围是 $y\in [1,4]$。这是因为如果您向 p
lot() 函数提供单个列表或者数组,则 matplotlib 会⾃动假定它是 Y 轴的序列,并⾃动为您产⽣ X 值。由于 Python 的范围从 0 开始,因此默认的 X 向量的长度会与 Y 轴相同,但从 X 是从 0 开始的。因此 X 轴的数据就是 $x\in [0,3]$。
plot() 是⼀种通⽤命令,它能够接受任意数量的参数。⽐如说,您想要绘制 X 与 Y 的关系,那么可以⽤以下代码来进⾏操作:
plt.plot([1,2,3,4],[1,4,9,16])
所⽣成图形的 X 轴就会从 1 开始,⽽不是最初的默认值 0 。
⾃定义您的绘图样式
对于每⼀个 $(x,y)$ 参数对,都有⼀个可选的第三参数,它是表⽰图的颜⾊和线条类型的格式。格式字符串的字母和符号都来⾃MATLAB,您得将颜⾊字符串和线条字符串连接在⼀起。⼀开始的默认符号串是 ‘b-’,这是⼀条蓝⾊实线。假如说你想⽤红⾊圆圈来绘制以上内容,你可以使⽤下⾯的代码:
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')plt.axis([0, 6, 0, 20])plt.show()
有关线型和格式字符串的完整 API,请参见 plot() ⽂档。上例中的 axis() 命令采⽤ [xmin, xmax, ymin, ymax] 的参数列形式。
如果 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 triangle
绘图中的关键字符串
在某些情况下,您会拥有⼀些带特定格式的数据,这种数据允许您使⽤字符串来访问特定的变量。⽐如说,array 或者
pandas.DataFrame。
Matplotlib 给予您 data 关键字以⽅便您为此类对象提供参数。如果您提供了的话,您就可以使⽤与这些变量相对应的字符串来⽣成您的图形,例如:
import matplotlib.pyplot as pltimport numpy as npdata = {'a': np.arange(50),        'c': np.random.randint(0, 50, 50),        'd': np.random.randn(50)}data['b'] =

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。