学习matplotlib--pyplot教程

来源:互联网 发布:招标数据.net 编辑:程序博客网 时间:2024/05/18 10:15

学习matplotlib第二弹

——对pyplot Tutorial的翻译

matplotlib.pyplot是一系列使得matplotlib工作的像MATLAB的命令风格函数 。每个pyplot函数都是对一个figure做操作:创建一个figure,在figure上开辟一块绘图区域,画一些直线在绘图区域,用标签(labels)装饰绘图等等。

matplotlib.pyplot的各种状态变量保存在函数调用中,以便于跟踪记录当前figure和绘图区域,并且绘图函数值作用于当前的figure的坐标轴

import matplotlib.pyplot as plt#设置Y轴的点plt.plot([1,2,3,4])#y轴的labelplt.ylabel('some numbers')#显示plt.show()

生成如下图片:
这里写图片描述

你也许会疑惑为什么x轴的范围是0~3,y轴的范围是1~4。假如你传入一个列表或者数组给plot()命令,matplotlib会假设这是一系列(a sequence of)y值,并且自动地生成x值给你。因为Python的ranges从0开始,这里默认的x向量与y向量有相同的长度并且值从0开始,所以x向量的数据是[0,1,2,3]。
plot()是一个用法多样的命令(versatile command),能够传入任意数据的参数。例如:你可以将上述例子里的

lt.plot([1,2,3,4])

改为如下

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

图片就变为:
这里写图片描述

对于任何一对x,y参数对,这里有一个可选的第三个参数–格式字串(format string),用来指定颜色和线条类型。格式字符串的字母符号取自MATLIB,在格式字符串中你能使用颜色字串标识颜色,线条类型子串标识线条类型(PS:就像C读文件时的标识串,eg:“r+”,”bw”一个意思)。默认的格式子串是”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()命令传入一列参数[xmin,xmax,ymin,ymax],指定坐标轴的x,y轴的最大最小值(viewport of the exes)

假如matplotlib只限制于处理这种普通的数据列表格式的数据,那它对数值处理(numeric processing)的作用将非常小。一般来说,你会使用numpy数组。事实上,所有序列都在内部被转换为numpy数组.下面这个例子将说明在一条plot命令传入数组画出不同格式的几条直线。

import numpy as npimport matplotlib.pyplot as plt# 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()

图片如下:
这里写图片描述


如何控制线属性

线条有许多你能够设置的属性:线宽,dash style,抗锯齿等等可以看matplotlib.lines.Line2D这里有几种方法来设置线条属性(line properties)

  • 用关键字参数
  #设置线宽  plt.plot(x, y, linewidth=2.0)
  • 用Line2D实例的设置器方法。假设plot返回一列Line2D对象,如line1,line2=plot(x1, y1, x2, y2).在下面的代码中我们将假使我们只有一条线,所以列表返回的长度是1,把列表以line拆包,我们取列表的第一个element
line, = plt.plot(x, y, '-')line.set_antialiased(False) # turn off antialising
  • 用setp()命令,下面的例子用了MATLAB风格在一系列线条上来设置多重属性,很明显,setp可作用于一系列对象或者单个对象。有能用python关键字参数或者MATLIB风格的 string/value对
lines = plt.plot(x1, y1, x2, y2)# use keyword argsplt.setp(lines, color='r', linewidth=2.0)# or MATLAB style string value pairsplt.setp(lines, 'color', 'r', 'linewidth', 2.0)

下面列出了可用的Line2D属性
这里写图片描述
这里写图片描述
如果要得到一系列可设置的线属性,可以调用setp()函数,并以line对象或者一列line对象当做参数传入

In [69]: lines = plt.plot([1, 2, 3])In [70]: plt.setp(lines)  alpha: float  animated: [True | False]  antialiased or aa: [True | False]  ...snip
0 0
原创粉丝点击