Matplotlib教程,Pyplot教程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib教程,Pyplot教程相关的知识,希望对你有一定的参考价值。

参考技术A pyplot是一个函数集合,能够让matplotlib像matlib一样工作,每一个函数都会对一个figure做出一些改变,例如,创建一个figure,在一个figure里创建一个plotting area,在plotting area里画一些线,在plot里加一些标签等
在pyplot函数调用之间会保留着各种状态,比如当前figure和plotting area和当前的axes(这里的axes是指figure中axes部分,不是指数学上的axis的复数)
pyplot API没有面像对象API灵活,这里能看到的大部函数都是从一个Axes对象的方法,建议看文档中的例子了解它是怎么工作的
用pyplot快速创建一张图

为什么x轴是0-3,y轴是1-4,如果你给plot传入一个数组,plot会假设是一个y值的序列,然后自动创建相应的x值,因为python从0开始,默认的x向量与y同样长度,则x为[0,1,2,3]
plot是一个万能命令,它可以任意数里的参数,例如,画一个x-y二维图像,可以这样用命令

对于每个成对的x,y,还有一个可选的第三个参数,用来指定画线的颜色和类型,格式化的字母符号借鉴于matlab,你能把颜色符号与线类型连在一起,默认的格式化符号是'b-',就是蓝色的实线,如果你想画一个红色图点,可以

plot文档里有所有的格式化参数,例子中axis()使用一个list [xmin,xmax,ymin,ymax]来指定可见范围
如果matplotlib只能用lists,那对于数字处理就没什么用了.一般来讲,你可以用numpy.array,实际上,所有序列都被内部转换成numpy.array,下面的例子用不同的形式画了一些线

有一些实例,是通过字符串访问变量里的数据,例numpy.recarray,pandas.DataFrame
matplotlib可以让你提供一些带有关键字字典的对象,如果是这样的对象,plot可以把字符串和变量关联起来

也可以使用分类变量做图,matlibplot有很多函数可以传入分类变量

线有很多属性,如线宽,样式,反锯齿,有很多方式设置线的属性

获取可设置属性的列表,调用setp函数

Matlab和pyplot,有一个当前figure和当前axes的概念,所有的plot命令都会作用在当前axes上,函数gca()返回当前axes,gcf()返回当前figure
通常,你不用担心这个,因为都在内部处理了这些问题,下面是一个创建两个subplot的脚本

这里的的figure()是可选的,因为默认情况自动创建了figure(1),还有如果你不指定任何subplot,会默认创建subplot(111),subplot指定行数,列数,plot序号,plot序号的范围是1到行数乘以列数.如果行列数相乘小于10,参数里的逗号是可选的,因为subplot(211)默认是指subplot(2,1,1)
你可以创建任何数量的subplot和axes,如果你想用axes()命令手动指定axes位置(例如不是一个矩形),你可以用axes([left,bottom,width,height]),这里所有数都是小数(0 to1)
可以多次用一个增长的数当参数调用figure()创建多个figures,当然,每个figure都包括多个subplot和axes

clf()可以清除当前figure,cla()可以清除当前axes,如果你觉得内部状态不好用,你可以用弱状态的面向对象API来代替它
如果你创建了多个figure,你需要注意一件事,figure是在调用close()的时候内存才被释放,删除所有figure,或用窗口管理器关闭窗口是不行的,因为pyplot在close()调用之前会有很多内部引用

text()命令可以在任何位置填加文本,xlabel,ylabel和title可以在指定的地方填加文本

所有的text()命令都会返回matplotlib.text.Text实例,和线段一样,你可以在函数里或者setp里用关键字参数自定义属性

matplotlib里文本里可以用Tex方程表达式,例如,你想写sigma=15,你可以用Tex表达式,然后用$括起来

前面的r很重要,它意味着\是字符串,不要当成python转义符,matplotlib有一个内置的Tex解析器和布局引擎,和自己的数字字体,也就是说可以在跨平台的时候不用安装Tex,如果安装了LaTex和dvipng,也可以用来做输出

text()可以用在axes的任何位置,一个用法就是用来注释,annotate()可以很容易的提供帮助功能,有两个坐标点要考虑,xy和xytext,都是元组形式

matplotlib不仅提供线性坐标轴刻度,而且还提供对数和分对数刻度,这种刻度对跨度很大的数据很有用,改变刻度比例很简单:

y轴不同刻度的例子

你也可以填加自己的刻度比例

matplotlib.pyplot.pcolormesh

 matplotlib.pyplot.pcolormesh(*argsalpha=Nonenorm=Nonecmap=Nonevmin=Nonevmax=Noneshading=‘flat‘antialiased=Falsedata=None**kwargs)      创建一个带有不规则矩形网格的伪彩色图

 
Parameters:
C array_like

A scalar 2-D array. The values will be color-mapped.

X, Y array_like, optional

The coordinates of the quadrilateral corners. The quadrilateral for C[i,j] has corners at:

(X[i+1, j], Y[i+1, j])          (X[i+1, j+1], Y[i+1, j+1])
                      +--------+
                      | C[i,j] |
                      +--------+
    (X[i, j], Y[i, j])          (X[i, j+1], Y[i, j+1]),

Note that the column index corresponds to the x-coordinate, and the row index corresponds to y. For details, see the Notes section below.

The dimensions of X and Y should be one greater than those of C. Alternatively, XY and C may have equal dimensions, in which case the last row and column of C will be ignored.

If X and/or Y are 1-D arrays or column vectors they will be expanded as needed into the appropriate 2-D arrays, making a rectangular grid.

cmap str or Colormap, optional

A Colormap instance or registered colormap name. The colormap maps the C values to colors. Defaults to rcParams["image.cmap"].

norm Normalize, optional

The Normalize instance scales the data values to the canonical colormap range [0, 1] for mapping to colors. By default, the data range is mapped to the colorbar range using linear scaling.

Normalize实例将数据值缩放到用于映射到颜色的规范化colormap范围[0,1]。默认情况下,使用线性缩放将数据范围映射到colorbar范围。

vmin, vmax scalar, optional, default: None

The colorbar range. If None, suitable min/max values are automatically chosen by the Normalizeinstance (defaults to  the respective min/max values of C in case of the default linear scaling).

edgecolors {‘none‘, None, ‘face‘, color, color sequence}, optional

  边缘颜色,默认None:

The singular form edgecolor works as an alias.

alpha scalar, optional, default: None

  透明度

shading {‘flat‘, ‘gouraud‘}, optional

The fill style, Possible values:

  填充式样

  • ‘flat‘: A solid color is used for each quad. The color of the quad (i, j), (i+1, j), (i, j+1), (i+1, j+1) is given by C[i,j].
  • ‘gouraud‘: Each quad will be Gouraud shaded: The color of the corners (i‘, j‘) are given by C[i‘,j‘]. The color values of the area in between is interpolated from the corner values. When Gouraud shading is used, edgecolors is ignored.
snap bool, optional, default: False

Whether to snap the mesh to pixel boundaries.

Returns:
mesh matplotlib.collections.QuadMesh

 

 

以上是关于Matplotlib教程,Pyplot教程的主要内容,如果未能解决你的问题,请参考以下文章

python---matplotlib

matplotlib 教程简析

一行Python代码有多强,可让图形秒变「手绘风」

Matplotlib利用Python进行绘图

如何用matplotlib画多个独立窗口的图

如何用matplotlib画多个独立窗口的图