1. container Artist:
a. Figure
matplotlib.figure.Figure
是最顶层的container Artist
,它包含了图表中的所有元素。Figure.patch
属性:Figure
的背景矩形Figure.axes
属性:持有的一个Axes
实例的列表(包括Subplot
)Figure.images
属性:持有的一个FigureImages patch
列表Figure.lines
属性:持有一个Line2D
实例的列表(很少使用)Figure.legends
属性:持有的一个Figure Legend
实例列表(不同于Axes.legends
)Figure.patches
属性:持有的一个Figure pathes
实例列表(很少使用)Figure.texts
属性:持有的Figure Text
实例列表
其他的属性:
Figure.figsize
属性:图像的尺寸,(w,h)
,以英寸为单位Figure.dpi
属性:图像分辨率Figure.facecolor
属性:背景色Figure.edgecolor
属性:edge color
Figure.linewidth
:edge linewidth
Figure.frameon
:如果为False
,则不绘制图像Figure.subplotpars
:一个SubplotParams
实例Figure.tight_layout
:如果为False
,则使用subplotpars
;否则使用tight_layout()
调整subplot parameters
当你执行
Figure.add_subplot()
或者Figure.add_axes()
时,这些新建的Axes
都被添加到Figure.axes
列表中。由于
Figure
维持了current axes
,因此你不应该手动的从Figure.axes
列表中添加删除元素,而是要通过Figure.add_subplot()
、Figure.add_axes()
来添加元素,通过Figure.delaxes()
来删除元素。但是你可以迭代或者访问Figure.axes
中的Axes
,然后修改这个Axes
的属性。可以通过
Figure.gca()
获取current axes
,通过Figure.sca()
设置current axes
。Figure
也有它自己的text
、line
、patch
、image
。你可以直接通过add primitive
语句直接添加。但是注意Figure
默认的坐标系是以像素为单位,你可能需要转换成figure
坐标系:(0,0)表示左下点,(1,1)表示右上点。创建
Figure
的方法:matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None,
edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>,
**kwargs)
num
:一个整数或者字符串。若未提供,则创建一个新的
figure
。如果给出了一个整数,而且某个现有的
figure
对象的number
属性刚好等于这个整数,则激活该figure
并且返回该figure
;否则创建一个新的figure
- 如果是个字符串,则创建一个新的
figure
,并且将window title
设置为该字符串。
figsize
:一对整数的元组。给出了英寸为单位的高度和宽度。默认由rc
的figure.figsize
给出dpi
:一个整数,给出figure
的分辨率。默认由rc
的figure.dpi
给出facecolor
:背景色。若未提供,则由rc
的figure.facecolor
给出edgecolor
:border color
。若未提供,则由rc
的figure.edgecolor
给出
返回一个
figure
1>. Figure 的一些方法
add_axes(*args, **kwargs)
:创建一个Axes
对象。如果已经存在同样位置同样参数的一个Axes
,则返回该Axes
,并将其设为current Axes
。其参数有:rect
:一个元组,代表了(left,bottom,width,height)
,它是第一个位置参数axisbg
:一个color
,背景色frameon
:布尔值,是否display frame
sharex
:另一个Axes
对象,与该Axes
共享xaxis
sharey
:另一个Axes
对象,与该Axes
共享yaxis
projection
:坐标系类型。projection='polar'
也等价于polar=True
aspect
:一个数值,指定x
和y
轴每个单位的尺寸比例。也可以设定为字符串'equal'/'auto'
- 关键字参数为
projection
+Axes
的合法关键字
如果你想在同样的一个
rect
创建两个Axes
,那么你需要设置label
参数。不同的Axes
通过不同的label
鉴别。如果你使用了
fig.delaxes()
从Figure
中移除了ax
,那么你可以通过fig.add_exes(ax)
来将其放回。add_subplot(*args,**kwargs)
:创建一个subplot
。如果已经存在同样位置同样参数的一个subplot
,则返回该subplot
,并将其设为current Axes
。- 关键字参数为
projection
+Axes
的合法关键字。projection
:坐标系类型。projection='polar'
也等价于polar=True
- 位置参数为:
add_subplot(nrows, ncols, plot_number)
。表示nrows
行,nclos
列每个单元格是一个sub-axes
。plot_number
给出了指定的sub-axes
,从 1开始。最大为nrows*ncols
。当这三个数字都是个位数时,可以使用一个三位数代替,每位代表一个数。 axisbg
:一个color
,背景色frameon
:布尔值,是否display frame
sharex
:另一个Axes
对象,与该Axes
共享xaxis
sharey
:另一个Axes
对象,与该Axes
共享yaxis
projection
:坐标系类型。projection='polar'
也等价于polar=True
aspect
:一个数值,指定x
和y
轴每个单位的尺寸比例。也可以设定为字符串'equal'/'auto'
- 关键字参数为
autofmt_xdate(bottom=0.2, rotation=30, ha='right')
:用于设置Date ticklabel
的位置。bottom
设置距离subplot
底部的位置。rotation
设置了xtick label
的旋转角度。ha
设置xtick label
的对其方式。该函数主要用于当xtick
为日期,可能会重叠,因此可以旋转一个角度clear()
:清除一个figure
clf(keep_observers=False)
:清除一个figure
。如果keep_observers=True
,则gui
仍然会跟踪figure
中的axes
colorbar(mappable, cax=None, ax=None, use_gridspec=True, **kw)
:为mappable
创建一个colorbar
。其中:mapple
:一个ScalarMapple
实例。它可以是Image/ContourSet...
。cax
:指定在哪个axes
中绘制colorbar
。也可以是None
ax
:None | parent axes object(s) from which space for a new colorbar axes will be stolen.use_gridspec
:False | If cax is None, a new cax is created as an instance of Axes. If ax is an instance of Subplot and use_gridspec is True, cax is created as an instance of Subplot using the grid_spec module
delaxes(a)
:从figure
中移除axes
gca(**kwargs)
:返回current axes
。如果不存在则创建一个get_children()
:获取figure
中包含的artists
get_dpi/get_edgecolor/get_facecolor/get_figheight/get_figwidth/
get_frameon/get_tight_layout...
:获取对应的属性值get_size_inches()
:返回fig
的当前尺寸(单位为英寸。1in=2.54cm
)legend(handles, labels, *args, **kwargs)
:创建图例。handles
:是一个Lin2D/Patch
等实例的一个序列labels
:是个字符串序列,用于给上述实例添加图例说明loc
:指定图例的位置。可以是字符串'best'
/'upper right'
/'upper left'
/'lower left'
/'lower right'
/'right'
/'center left'
/'center right'
/'lower center'
/'upper center'
/'center'
。你也可以指定坐标(x,y)
,其中(0,0)
是左下角,(1,1)
是右上角numpoint
/scatterpoints
:图例上每个图例线的点数fancybox
:如果为True
,图例的边框采用圆角矩形shadow
:如果为True
,图例添加背影ncol
:列数title
:图例的标题framealpha
:一个浮点数,从0到 1,图例的透明度frameon
:一个布尔值,如果为True
,则绘制图例的背景框。否则不绘制。
savefig(fname, dpi=None, facecolor='w', edgecolor='w',orientation='portrait', papertype=None, format=None, transparent=False, bbox_inches=None, pad_inches=0.1,frameon=None)
:保存图像。fname
:带路径的文件名。dpi
:保存的分辨率。facecolor/edgecolor
:figure rectangle
的背景色和边线颜色orientation
:可以为'landscape' | 'portrait'
format
:图片格式。可以为'png'/'pdf'/'svg'/'eps'...
transparent
:如果为True
,设置figure
和axes
背景透明(除非你设置了facecolor/edgecolor
)frameon
:如果为False
,则图形背景透明
sca(a)
:设置a
为current axes
并返回它set_dpi/set_edgecolor...
:设置相关属性show(warn=True)
:显示图像。如果warn=True
,则开启警报subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=None)
:调整subplot
的位置。suptitle(t, **kwargs)
:设置图像标题。t
为标题字符串。关键字参数就是Text
对象的参数:x
:在图形坐标系中,标题的横坐标(范围 0~1)y
:在图形坐标系中,标题的纵坐标(范围 0~1)horizontalalignment
:标题水平对齐方式,默认为'center'
verticalalignment
:标题垂直对齐方式,默认为'top'
fontsize
:字体大小
text(x, y, s, *args, **kwargs)
:添加文本。x
:在图形坐标系中,标题的横坐标(范围 0~1)y
:在图形坐标系中,标题的纵坐标(范围 0~1)s
:文本字符串
tight_layout(renderer=None, pad=1.08, h_pad=None, w_pad=None, rect=None)
:调整subplot
的间距。pad
:设定subplot
和figure edge
之间的距离。单位为font-size
h_pad/w_pad
:subplot
之间的高距/宽距。
b. Axes类
Axes
类是matplotlib
的核心,你在大多数时间都是在与它打交道。Axes
代表了plotting area
。大量的用于绘图的Artist
存放在它内部,并且它有许多辅助方法来创建和添加Artist
给它自己,而且它也有许多赋值方法来访问和修改这些Artist
。它有许多方法用于绘图,如
.plot()
、.text()
、.hist()
、.imshow()
等方法用于创建大多数常见的primitive
(如Line2D
,Rectangle
,Text
,Image
等等)。这些方法会创建primitive Artist
实例,并且添加这些实例到对应的container
上去,然后必要的时候会绘制这些图形。Subplot
就是一个特殊的Axes
,其实例是位于网格中某个区域的Subplot
实例。其实你也可以在任意区域创建Axes
,通过Figure.add_axes([left,bottom,width,height])
来创建一个任意区域的Axes
,其中left,bottom,width,height
都是[0—1]之间的浮点数,他们代表了相对于Figure
的坐标。Axes
包含了一个.patch
属性,对于笛卡尔坐标系而言,它是一个Rectangle
;对于极坐标而言,它是一个Circle
。这个.patch
属性决定了plotting region
的形状、背景和边框。当调用
Axes.plot()
方法时,该方法会创建一个matplotlib.lines.Line2D
实例,然后会利用传给.plot()
的关键字参数来更新该Line2D
的属性,然后将这个Line2D
添加到Axes.lines
列表中。该方法返回的刚创建的Line2D
列表,因为你可以传递多个(x,y)
值从而创建多个Line2D
。当调用
Axes.hist()
方法时,类似于.plot()
方法,不过它会添加patches
到Axes.patches
列表。你不应该直接通过
Axes.lines
和Axes.patches
列表来添加图表。因为当你通过.plot()
和.hist()
等方法添加图表时,matplotlib
会做许多工作而不仅仅是添加绘图组件到Axes.lines
或者Axes.patches
列表中。但是你可以使用
Axes
的辅助方法.add_line()
和.add_patch()
方法来添加。下面是
Axes
用于创建primitive Artist
以及添加他们到相应的container
中的方法:ax.annotate()
:创建text annotation
(Annotate
对象),然后添加到ax.texts
列表中。ax.bar()
:创建bar chart
(Rectangle
对象),然后添加到ax.patches
列表中。ax.errorbar()
:创建error bar plot
(Line2D
对象和Rectangle
对象),然后添加到ax.lines
列表中和ax.patches
列表中。ax.fill()
:创建shared area
(Polygon
对象),然后添加到ax.patches
列表中ax.hist()
:创建histogram
(Rectangle
对象),然后添加到ax.patches
列表中。ax.imshow()
:创建image data
(AxesImage
对象),然后添加到ax.images
列表中。ax.legend()
:创建axes legends
(Legend
对象),然后添加到ax.legends
列表中。ax.plot()
:创建xy plot
(Line2D
对象),然后添加到ax.lines
列表中。ax.scatter()
:创建scatter charts
(PolygonCollection
对象),然后添加到ax.collections
列表中。ax.text()
:创建text
(Text
对象),然后添加到ax.texts
列表中。
另外
Axes
还包含两个最重要的Artist container
:ax.xaxis
:XAxis
对象的实例,用于处理x
轴tick
以及label
的绘制ax.yaxis
:YAxis
对象的实例,用于处理y
轴tick
以及label
的绘制
Axes
包含了许多辅助方法来访问和修改XAxis
和YAxis
,这些辅助方法其实内部调用的是XAxis
和YAxis
的方法。因此通常情况下你不需要直接调用XAxis
和YAxis
的方法。
1>. Axes 的一些方法
acorr(x, **kwargs)
:绘制序列x
的自相关。x
:一个标量序列。对x
执行自相关normed
:一个布尔值,如果为True
,则对数据正则化处理maxlags
:一个整数,默认为10.它给出了要展示多少个lag
。如果为None
,则使用所有的2*len(x)-1
个- 其他
kwargs
:控制了Line2D
的属性
返回:
(lags,c,lin,b)
lags
:是一个长度为2*maxlags+
的lag vector
c
:是长度为2*maxlags+
的自相关向量line
:是一个Line2D
实例b
:是x-axis
add_artist(a)
:添加a
(一个Artist
对象)到axes
上add_collection(collection, autolim=True)
:添加Collection
实例到axes
上add_container(container)
:添加Container
实例到axes
上add_image(image)
:添加Image
实例到axes
上add_line(line)
:添加Line2D
实例到axes
上add_patch(p)
:添加Patch
实例到axes
上add_table(tab)
:添加Table
实例到axes
上annotate(*args, **kwargs)
:对坐标点(x,y)
绘制注解。s
:注解字符串xy
:一个长度为2的序列,给出了坐标点的(x,y)
坐标xytext
:一个长度为2的序列,给出了注解字符串的(x,y)
坐标xycoords
:给出了坐标点的(x,y)
所对应的坐标系。可以为'figure points'
、'figure pixels'
、'figure fraction'
、'axes points'
、'axes pixels'
、'axes fraction'
、'data'
。其中figure
表示Figure
坐标系,axes
表示Axes
坐标系,data
表示被注解的点所在的数据坐标系。points
表示单位为点(分辨率的点);pixels
表示单位为像素,fraction
表示:(0,0) 为左下角,(1,1) 为右上角textcoords
:给出了注解字符串的(x,y)
所对应的坐标系。可以为xycoords
允许的值之外,还可以为:'offset points'
:偏移被注解的坐标点的距离为(x,y)
个点(分辨率的点)'offset pixels'
:偏移被注解的坐标点的距离为(x,y)
个像素
arrowprops
:一个字典,给出了箭头的类型。- 若字典不包含
arrowstyle
,则可以使用下面的键:width/headwidth/headlength/shrink
以及其他的FancyArrowPatch
的属性。 - 如果字典包含了
arrowstyle
,则上面的这些键将被屏蔽。arrowstyle
的值可以为:'-'
、'->'
、'-['
、'|-|'
、'-|>'
、'<-'
、'<->'
、'<|-'
、'<|-|>'
、'fancy'
、'simple'
、'wedge'
- 若字典不包含
annotation_clip
:一个布尔值。如果为True
,则超出axes
的部分将会不可见
autoscale_view(tight=None, scalex=True, scaley=True)
:自动调整坐标轴的范围。如果你不想自动调整x
轴,则scalex=False
即可。y
轴类似。arrow(x, y, dx, dy, **kwargs)
:绘制箭头。箭头起点为(x,y)
,终点为(x+dx,y+dy)
。你也可以使用annotate()
来模拟本方法。x,y
:箭头起点坐标(data
坐标系)dxx,dy
:箭头终点坐标为(x+dx,y+dy)
(data
坐标系)width
:箭头宽度length_includes_head:
:如果为True
,则箭头的头部也算在箭头长度内head_width
:箭头的头部宽度head_length
:箭头的头部长度shape
:可以为'full'/'left'/'right'
。确定是绘制左半边/右半边还是全部画出- 其他参数控制了
Patch
的属性
axhline(y=0, xmin=0, xmax=1, **kwargs)
:绘制水平线。y
:一个标量,默认为 0.给出了水平的y
坐标(采用data
坐标系)xmin
:一个标量,默认为 0。给出了水平线的起始横坐标。最大为 1(表示最右侧)(使用Axes
坐标系)xmax
:一个标量,默认为 1。 给出了水平线的终点横坐标。最小为 0 (表示最左侧)(使用Axes
坐标系)- 其他关键字参数控制
Line2D
的属性
axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs)
:绘制水平区域。ymin/ymax
:给出了水平区域的y
坐标的下界和上界,采用data
坐标系xmin/xmax
:给出了水平区域的左侧和右侧的位置。采用Axes
坐标系,最小为0,最大为 1- 其他关键字参数控制
Line2D
的属性
axis(*v, **kwargs)
:设置axis
属性,它返回的是(xmin,xmax,ymin,ymax)
。data
坐标系下每个轴的最小值、最大值。v
: Axis data limits set from a float list。也可以是字符串:'on'
:Toggle axis lines and labels on'off'
:Toggle axis lines and labels off'equal'
:Equal scaling by changing limits''tight
:Limits set such that all data is shown'auto'
:Automatic scaling, fill rectangle with data
xmin/ymin/ymax/ymax
:待设置的轴的最小/最大值
axvline(x=0, ymin=0, ymax=1, **kwargs)
:绘制垂直线。x
:一个标量,默认为 0.给出了垂直线的x
坐标(采用data
坐标系)ymin
:一个标量,默认为 0。给出了垂直线的起始纵坐标。最大为 1(表示最上侧)(使用Axes
坐标系)ymax
:一个标量,默认为 1。 给出了垂直线的终点纵坐标。最小为 0 (表示最下侧)(使用Axes
坐标系)- 其他关键字参数控制
Line2D
的属性
axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
:绘制垂直区域。xmin/xmax
:给出了垂直区域的x
坐标的左侧和右侧,采用data
坐标系ymin/ymax
:给出了垂直区域的上侧和下侧的位置。采用Axes
坐标系,最小为0,最大为 1- 其他关键字参数控制
Line2D
的属性
bar(left, height, width=0.8, bottom=None, **kwargs)
:绘制一个bar
。left
:一个标量或者标量的序列,bar
的左侧的x
坐标,采用data
坐标系height
:一个标量或者标量的序列,bar
的高度,采用data
坐标系width
:一个标量或者标量的序列,bar
的宽度,默认为 0.8,采用data
坐标系bottom
:一个标量或者标量的序列,bar
的底部的y
坐标,默认为 0,采用data
坐标系color
:一个标量或者标量的序列,bar
的背景色edgecolor
:一个标量或者标量的序列,bar
的边色颜色linewidth
:一个标量或者标量的序列,bar
的边的线宽tick_label
:一个字符串或者字符串的序列,给出了bar
的label
xerr
:一个标量或者标量的序列,用于设置bar
的errorbar
。(水平方向的小横线)yerr
:一个标量或者标量的序列,用于设置bar
的errorbar
(垂直方向的小横线)ecolor
:一个标量或者标量的序列,用于设置errorbar
。capsize
:一个标量,用于设置errorbar
。小横线头部的一个小短线error_kw
:一个字典,用于设置errorbar
。如ecolor/capsize
关键字align
:一个字符串,设定bar
的对齐方式。可以为'edge'
或者'center'
。柱子的左边跟x=left
线对齐,还是柱子的中线跟x=left
线对齐。orientation
:一个字符串,指定bar
的方向。可以为'vertical'
或者'horizontal'
。它决定了errbar
和label
放置的位置。log
:一个布尔值,如果为True
,则设置axis
为对数坐标
返回
matplotlib.container.BarContainer
.你可以一次添加多个
bar
,此时就是上述的“标量的序列”。barh(bottom, width, height=0.8, left=None, **kwargs)
:绘制水平的bar
bottom
:一个标量或者标量的序列,bar
的底部的y
坐标,默认为 0,采用data
坐标系width
:一个标量或者标量的序列,bar
的宽度,默认为 0.8,采用data
坐标系height
:一个标量或者标量的序列,bar
的高度,采用data
坐标系left
:一个标量或者标量的序列,bar
的左侧的x
坐标,采用data
坐标系- 其他参数参考
bar
方法
它就是
bar(orientation='horizontal')
。cla()/clear()
:清除Axes
clabel(CS, *args, **kwargs)
:为等高线添加label
。CS
:由contour
函数返回的ContourSet
,代表一组等高线fontsize
:label
的字体大小,或者给出字符串'smaller'/'x-large'
colors
:如果为None
,则使用对应的等高线的颜色。如果为一个字符串指定的颜色,则所有的等高线label
使用该颜色。如果为一组颜色,则不同的等高线的label
按顺序使用其中的不同的颜色。inline
:一个布尔值。如果为True
,则移除label
覆盖的底层的等高线(嵌入式);否则就全部绘制(重叠式)inline_spacing
:一个浮点数,单位为像素点。它控制了label
距离等高线的距离
contour(*args, **kwargs)
:绘制等高线。它返回一个QuadContourSet
对象 最常用的四种方式:contour(Z)
:其中Z
为二维数组。数据坐标系下的坐标点(i,j)
对应了Z[j,i]
(x
轴对应列,y
轴对应行)。该方法随机挑选一些等高线绘制。contour(X,Y,Z)
:其中X/Y/Z
均为二维数组,且形状相同。对应位置的横坐标由X
提供,纵坐标由Y
提供,值由Z
提供。该方法随机挑选一些等高线绘制。X
和Y
也可以同时是一维数组,且len(X)
是Z
的列数,len(Y)
是Z
的行数。contour(Z,N)/contour(X,Y,Z,N)
:N
为一个整数,表示绘制N
条等高线。该方法随机挑选N
条等高线绘制。contour(Z,V)/contour(X,Y,Z,V)
:V
为一个递增的序列,表示绘制那些值位于V
中的等高线
其他关键字参数:
colors
:如果为None
,则由cmap
给出。如果是一个字符串,这所有的等高线由字符串指定的颜色给出。如果是一个序列,该序列中每个都代表了一个颜色,则等高线的颜色依次由该序列给出。cmap
:一个Colormap
对象。如果为None
,则默认的Colormap
将被使用levels
:一个序列(升序排列)。指定了要绘制等高线值位于levels
的等高线。origin
:参考Axes.imshow
中的该参数设置。extent
:它是一个元组(x0,x1,y0,y1)
。如果给出了(X,Y)
,则该参数无效。如果未给出(X,Y)
:- 如果
origin
非None
,则它给出了外边界,Z[0,0]
位于图形中间 - 如果
origin
为None
,则(x0,y0)
对应Z[0,0]
;(x1,y1)
对应Z[-1.-1]
,等价于同时使用了set_xlim(left,right)+set_ylim(bottom,top)
- 如果
antialiased
:一个布尔值,用于开启/关闭反走样linewidths
:如果为None
,则使用默认值。如果为一个整数,则所有的等高线都是用该线宽。如果为一个整数序列,则等高线依次使用它指定的线宽。只有contour
适用linestyles
:如果为None
,则使用默认的实线。你也可以指定为'solid'/'dashed'/'dashdot'/'dotted'
。你可以指定搜有的等高线使用一种线型,也可以使用一个线型序列。只有contour
适用
contourf(*args, **kwargs)
:它绘制的是带填充的等高线。其参数和用法基本和contour
相同。它返回一个QuadContourSet
对象contourf(Z,V)/contourf(X,Y,Z,V)
:V
是递增的序列,指定了等高线的值。该方法会填充V
中相邻两个等高线之间的区域contourf
不同与contour
的关键字参数为hatches
:它指定了填充区域的填充类型(如以小斜线填充)。如果为None
,则无任何hatch
。它典型值为hatches=['.', '/', '\', None, '\\', '*','-',]
contourf
填充的是半开半闭区间(z1,z2]
errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None,
capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False,
xuplims=False, errorevery=1, capthick=None, **kwargs)
:绘制errorbar
,返回(plotline, caplines, barlinecols)
x
:一个序列,指定x
坐标y
:一个序列,指定y
坐标。即:y=f(x)
yerr
:指定y
的error
。如果为标量,则每个点都是相同的error
;如果为一维向量,则依次给出了每个点的error
。如果是个二维向量,则依次给出了每个点的上error
和下error
xerr
:指定x
的error
。如果为标量,则每个点都是相同的error
;如果为一维向量,则依次给出了每个点的error
。如果是个二维向量,则依次给出了每个点的左error
和右error
fmt
:可以为空字符串,或者'none'
或者其他的plot format string
。如果是'none'
则只有errorbars
能够被绘制ecolor
:指定了errorbar
的颜色elinewidth
:指定了errorbar
的线宽capsize
:指定了errorbar
头部的小横线的宽度errorevery
:一个整数。如果为 4, 则每隔 4个点才绘制一个errorbar
- 其他的关键字参数都是用于指定
marker
的类型。如: `marker=’s’, mfc=’red’, mec=’green’, ms=20, mew=4。他们是
markderfacecolor,markeredgecolor,markdersize,markderedgewidth`的缩写。
eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1,
linewidths=None, colors=None, linestyles='solid', **kwargs)
:绘制时间线。时间线就是在指定位置上并排的一系列线段。返回matplotlib.collections.EventCollection
的一个列表positions
:一个一维或者二维的数组。每一行代表了一组直线orientation
:可以为'horizonal'|'vertical'
,代表了摆放时间线的方式。如果是水平走向的,则垂直摆放直线;如果是垂直走向的,则水平放置直线lineoffsets
:一个浮点数或者浮点数的序列,指定了时间线中轴距离y=0
的偏离值linelengths
:一个浮点数或者浮点数的序列,指定了线的长度linewidths
:一个浮点数或者浮点数的序列,指定了线的宽度colors
:一个颜色或者一组颜色,指定了线的颜色。颜色可以为颜色字符串,或者一个RGB
元组。linestyles
:一个线型或者一组线型,指定了线型。线型在'solid' | 'dashed' | 'dashdot' | 'dotted'
四者之一
如果
positions
是一个一维数组,表示绘制一组时间线。那么lineoffsets/linelengths/linewidths/colors/linestyles
都是标量值,指定该组时间线的格式。如果positions
是一个二维数组则,有多少行,就有多少组时间线。制定时间线格式的这些参数都是序列,序列长度就是positions
的行数。fill(*args, **kwargs)
:绘制多边形。返回一个Patch
列表。其常用的方式为:绘制一个多边形:
fill(x,y,'b')
,其中x
为多边形的边上的点的x
坐标;y
为多边形的边上的点的y
坐标。'b'
为多边形的填充颜色。绘制多个多边形:
fill(x1,y1,'b',x2,y2,'r')
。这里指定多个x,y,color
就可以。closed
关键字参数:一个布尔值,确定是否封闭多边形(即多一条从起点到终点的边)。默认为True
plot()
支持的color string
在这里也被支持剩下的关键字参数用于控制
Polygon
的属性。如hatch
:一个字符串,指定填充方式,如['/' | '\' | '|' | '-' | '+' | 'x' | 'o' | 'O' | '.' | '*']
label
:一个字符串,指定标签fill
:一个布尔值,决定是否填充facecolor/edgecolor/color
:颜色
fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, **kwargs)
:绘制填充区域。它填充两个曲线之间的部分。它返回一个PolyCollection
对象。x
:一个序列,指定x
坐标y1
:第一条曲线的纵坐标。如果为标量,说明该曲线为水平线。y2
:第二条曲线的纵坐标。如果为标量,说明该曲线为水平线。where
:指定填充哪里。如果为None
,则填充两条曲线之间的所有区域,这是默认值。如果非None
,则他是一个一维布尔数组,长度与x
相同。只有为True
对应的x
处才被填充。interpolate
:一个布尔值。如果True
,则进行插值计算来寻找两个曲线的交点。如果为False
,则不进行插值。step
:可以为'pre'/'post'/'mid'
或者None
,设定填充区域的边界的形状。
fill_betweenx(y, x1, x2=0, where=None, step=None, **kwargs)
:绘制填充区域。该区域是以y
为自变量,x
为函数的两条曲线合围而成。它返回一个PolyCollection
对象。y
:一个序列,为纵坐标x1
:第一个曲线的x
坐标。它是一个反函数,即以y
为自变量x2
:第二个曲线的y
坐标。它也是一个反函数where
:指定填充哪里。如果为None
,则填充两条曲线之间的所有区域,这是默认值。如果非None
,则他是一个一维布尔数组,长度与y
相同。只有为True
对应的y
处才被填充。step
:可以为'pre'/'post'/'mid'
或者None
,设定填充区域的边界的形状。
通常建议提供一个
alpha
参数,用于设定填充的透明度。如果同一个区域被多个fill_between()
填充,那么设定alpha
之后会让每一层都能显示出来。fill_between
沿着x
轴填充;fill_betweenx
沿着y
轴填充findobj(match=None, include_self=True)
:筛选出合适的artist
对象,返回一个列表。他会递归的向下搜寻match
指定过滤器。- 如果为
None
,则它选出axes
包含的所有artist
- 如果为一个函数,则函数接受一个
artist
参数,返回布尔值。所有返回True
的artist
被选中 - 如果是一个类,则返回属于该类的
artist
- 如果为
include_self
:如果为True
,则也检查自己
get_xx
函数:返回对应的属性值。有:get_alpha/get_anchor/get_animated/get_aspect/get_axis_bgcolor/
get_axisbelow/get_clip_box/get_clip_path/get_frame_on/get_gid
get_label/get_legend/get_lines/get_title/get_transform/get_visible
get_xaxis/get_xlabel/get_xlim/get_xscale/get_xticklabels/get_yaxis...
grid(b=None, which='major', axis='both', **kwargs)
:开启关闭网格。b
为布尔值,指定你想开启(True
)还是关闭网格which
:可以为'major'/'minor'/'both'
,指定你想开启哪个级别的网格axis
:可以为'x'/'y'/'both'
,指定你想在那个轴上开启网格- 其他的关键字参数设定了网格的线条类型。如
color/linestype/linewidth
还有一种简单用法,就是
axes.grid()
,此时表示:如果网格开启,则关闭。如果网格关闭,则开启。hexbin(x, y, C=None, gridsize=100, bins=None, xscale='linear', yscale='linear',
extent=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None,
edgecolors='none', reduce_C_function=<function mean>, mincnt=None,
marginals=False, **kwargs)
:绘制hexbin
。它用于同一个地方有很多点的情况,是六边形面元划分,是一种二元直方图。返回一个PolyCollection
对象。x/y
:一维数组,它们形状相同。它们给出了绘制六边形面元的点。C
:如果非None
,则它给出了坐标(x[i],y[i])
的count value
。它和x
长度相同,也是一维数组x/y/C
也可能是masked array
,此时只有unmasked
的点才被绘制reduce_C_function
:将坐标(x[i],y[i])
的count value
进行归并。因为同一个坐标可能被设定了多个count value
。而每个点根据其count value
来染色gridsize
:一个整数。它调整了六边形面元x
方向的尺寸,y
方向的尺寸自动选取。你也可以设定它为一个元组,同时调整x/y
方向的尺寸。它实际上给出的是x
轴可以放置的面元数量,因此该数值越大,六边形面元尺寸越小。bins
:- 如果为
None
,则每个六边形面元的颜色值直接对应了它的count value
- 如果为
'log'
,则每个六边形面元的颜色值对应了它的count value+1
的对数值 - 如果为一个整数, divide the counts in the specified number of bins, and color the hexagons accordingly
- 如果为一个整数序列,则the values of the lower bound of the bins to be used
- 如果为
xscale
:可以为'linear'/'log'
,设置了x
轴是线性还是对数scale
:可以为'linear'/'log'
,设置了y
轴是线性还是对数mincnt
:一个整数或者None
。它指定显示这一类的面元:面元包含的坐标点的数量超过mincnt
。对于面元包含坐标点数量少于mincnt
的,不显示。marginals
:一个布尔值。如果为True
,则沿着坐标轴绘制密度条。extent
:一个元组(left, right, bottom, top)
,等价于同时使用了set_xlim(left,right)+set_ylim(bottom,top)
。剩下的参数设定颜色和面元的属性。
hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False,
bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None,
log=False, color=None, label=None, stacked=False, **kwargs)
:绘制直方图。 其返回值为:- 如果绘制一个直方图,那么就是元组
(n, bins, patches)
,n
为频数/频率;bins
为直方图的各个分界点;patches
为每个直方图。 - 如果绘制多个直方图,那么就是元组
([n0, n1, ...], bins, [patches0, patches1,...])
参数为:
x
:一个序列或者一维数组,给定了直方图的数据bins
:一个整数。返回了bins+1
个分界点,将竖着划分成等分的bins
份。你可以传递一个序列,指定分界点,此时可以实现非等分的划分。range
:一个元组,给出了数据的上界和下界,在这之外的数据不被考虑。默认就是(x.min(),x.max())
normed
:布尔值,如果为True
,则返回的是数据出现的频率;否则返回的是数据出现的频数weights
:长度与x
相同的序列,给出了每个数据的权重cumulative
:布尔值。如果为True
,则计算的是累积频率/频数bottom
:一个整数或者整数序列或者None
,指定了直方图底部的纵坐标。默认为 0histtype
:直方图的类型。可以为'bar'/'barstacked'/'step'/'stepfilled'
align
:直方图每个小矩形的对齐方式。可以为'left'/'mid'/right'
orientation
:调整方向。可以为'horizontal'/'vertical'
。如果为水平则,使用barh
,同时bottom
参数设定的是左侧的横坐标值rwidth
:一个标量值,设定了直方图每个矩形的相对于默认值的宽度。如果直方图类型为step/stepfilled
,则忽略该参数。log
:布尔值。如果为True
:则x
轴使用对数坐标color
:颜色或者颜色序列,用于给直方图指定颜色label
:字符串或者字符串序列。给直方图指定标签stacked
:一个布尔值。如果为True
,则多个直方图会叠加在一起。- 其他参数设置了
Patch
的属性
- 如果绘制一个直方图,那么就是元组
hist2d(x, y, bins=10, range=None, normed=False, weights=None, cmin=None,
cmax=None, **kwargs)
:绘制二维直方图。其返回值为元组(counts, xedges, yedges, Image)
参数为:
x
:一个序列或者一维数组,给定了x
坐标序列y
:一个序列或者一维数组,给定了y
坐标序列bins
:- 如果为整数,则给出了两个维度上的区间数量
- 如果为
int,int
序列,则分别给出了x
区间数量和y
区间数量 - 如果给定了一个一维数组,则给出了
x_edges=y_edges=bins
- 如果为定了
array,array
,则分别给出了x_edges,y_edges
range
:一个(2,2)
的数组,给出了数据的上界和下界,在这之外的数据不被考虑。默认就是(x.min(),x.max())
normed
:布尔值,如果为True
,则返回的是数据出现的频率;否则返回的是数据出现的频数weights
:长度与x
相同的序列,给出了每个数据的权重cmin
:一个标量值。那些count
值小于cmin
的单元不被显示。同时返回的结果中,这些单元返回nan
cmax
:一个标量值。那些count
值大于cmax
的单元不被显示。同时返回的结果中,这些单元返回nan
其他参数设置了
pcolorfast()
属性
hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', **kwargs)
:从xmin
到xmax
绘制一系列的水平线。这些水平线的纵坐标由y
提供。y
:水平线的纵坐标。如果为标量,则为一条水平;如果为序列,则为一系列水平线。数据坐标系xmin/xmax
:水平线的起点和终点的横坐标。如果是个标量,则所有的水平线公用。如果是序列,则每个水平线设置一个。数据坐标系linestyles
:指定线型。可以为一个字符串(所有水平线公用),或者字符串序列(每个水平线一个)。线型在'solid' | 'dashed' | 'dashdot' | 'dotted'
四者之一colors
:指定颜色。可以为一个颜色(所有水平线公用),或者颜色序列(每个水平线一个)。label
:一个字符串,指定标签。- 其他关键字参数设置
LineCollection
属性。
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None,
vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None,
resample=None, url=None, **kwargs)
:绘制图片。返回一个AxesImage
对象X
:包含了图片的数据。其形状可以为:(n,m)
(灰度图),类型为float
(n,m,3)
(RGB
图),类型为float
(此时每个元素的值都在 0 和 1.0 之间),或者unit8
(n,m,4)
(RGBA
图),类型为float
(此时每个元素的值都在 0 和 1.0 之间),或者unit8
cmap
:一个Colormap
实例。默认由rc
的image.cmap
指定。如果X
是RGB/RGBA
,则忽略该参数aspect
:一个字符串,指定图片的缩放。可以为:'auto'
:缩放图片的宽高比,是的它匹配axes
'equal'
:当extent
参数为None
时,修改axes
的宽高比,使得它匹配图片;如果extent
参数不是None
,则修改axes
的宽高比来匹配extent
None
:默认由rc
的image.aspect
指定
interpolation
:一个字符串,指定插值方式。可以为'none', 'nearest', 'bilinear', 'bicubic',
'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom',
'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos'
norm
:一个Normalize
实例,用于将图片亮度正则化到0~1
。如果为None
,则采用normalize.norm
vmin/vmax
:用于辅助norm
进行正则化。如果你传入了一个norm
实例,则该参数忽略alpha
:浮点数,指定透明度origin
:可以为'upper'/'lower'
。图片的第一个像素X[0,0]
放置在坐标原点。'upper'
:横坐标向右,纵坐标向下'lower'
:横坐标向右,纵坐标向上
extent
:一个元组(left, right, bottom, top)
,等价于同时使用了set_xlim(left,right)+set_ylim(bottom,top)
shape
:一个元组(column,rows)
,用于rar buffer image
filternorm/filterrad
:用于过滤其他参数用于调整
Artist
属性
legend(*args, **kwargs)
:创建一个图例。最简单的方式:你首先创建一个
Axes
,然后在其中添加lines
,然后直接调用ax.legend()
即可。此时那些label
非空的线将被图例注释你也可以采用下面面向对象的方案:线创建
line
,然后调用line.set_label()
,然后调用ax.legend()
。此时的逻辑更清晰如果你不想让某个
line
被图例注释,则它的label
要么为空字符串,要么为以下划线开始。还有一种直接控制图例的方式:它直接显式指定了被注释的
line
和对应的label
ax.legend((line1,line2,line3),('label1','label2','label3'))
关键字参数:
loc
:指定了图例的位置。可以为整数或者字符串。可以是字符串'best'
/'upper right'
/'upper left'
/'lower left'
/'lower right'
/'right'
/'center left'
/'center right'
/'lower center'
/'upper center'
/'center'
,对应于整数的0~10
。你也可以指定坐标(x,y)
,其中(0,0)
是左下角,(1,1)
是右上角ncol
:一个整数,指定图例中有几列,默认为 1列prop
:一个字典,或者FontProperties
实例,可以指定图例中的字体属性。fontsize
:控制字体大小,可以为整数、浮点数(指定字体绝对大小),或者字符串'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'
numpoint
/scatterpoints
:图例上每个图例线的点数fancybox
:如果为True
,图例的边框采用圆角矩形framealpha
:一个浮点数,从0到 1,图例的透明度frameon
:一个布尔值,如果为True
,则绘制图例的背景框。否则不绘制。shadow
:如果为True
,图例添加背影ncol
:列数title
:图例的标题
locator_params(axis='both', tight=None, **kwargs)
:控制tick locator
axis
:一个字符串,指定控制那个轴。可以为'x'/'y'/'both'
。tight
:一个布尔值。它传递给autoscale_view()
- 其他关键字参数传递给
set_params()
方法
如果你想调整主轴上的刻度线的数量,可以使用
ax.locator_params(tight=True,nbins=4)
loglog(*args, **kwargs)
:绘制line
,但是将x
轴和y
轴都调整为对数坐标x
:数据的x
坐标y
:数据的y
坐标basex/basey
:一个大于 1 的标量,控制对数的底数subsx/subsy
:一个序列,给出了x/y
轴的子刻度的位置(数据坐标系)。默认为None
,此时子刻度是自动划分的nonposx/nonposy
:如果为'mask'
,则x/y
的负数或者零将被视作无效的数;如果为'clip'
,则x/y
的负数或者零将被视作一个非常小的正数(因为对数的自变量要大于零)- 剩下的参数将被作为
Line2D
的属性
margins(*args, **kw)
:设置Axes
的margin
。你可以通过ax.margins()
获取当前的margin
。 你也可以通过ax.margins(x=xmargin,y=ymargin)
来设置margin
。这两个参数的值是0~1
matshow(Z, **kwargs)
:将一个矩阵绘制成图片。Z
:一个形状为(n,m)
的数组- 其他参数见
imshow
minorticks_off()
:关闭次刻度线。minorticks_on()
:打开次刻度线。pcolor(*args, **kwargs)
:绘制一个pseudocolor plot
,返回一个Collection
实例。对于大型数组,它很慢,此时推荐使用pcolormesh()
。常用的方式为:
pcolor(C,*kwargs)
,此时C
为一个二维数组。也可以指定pcolor(X,Y,C,*kwargs)
。X/Y/C
都是二维数组,并且X
和Y
的尺寸比C
大。它将在四个点决定的矩形中填充颜色C[i,j]
:(X[i, j], Y[i, j])
,(X[i, j+1], Y[i, j+1])
,(X[i+1, j], Y[i+1, j])
,(X[i+1, j+1], Y[i+1, j+1])
。X/Y
也可以是一维的,但是首先会进行广播法则。关键字参数为:
cmap
:一个Colormap
实例。如果为None
,则使用rc
的设置edgecolors
:None
或者'none'
或者一个颜色或者一个颜色序列。用于设定边的颜色- 其他参数设置
PopyCollection
属性
pcolorfast(*args, **kwargs)
:用法和pcolor
相同,它是一个实验性质的,提供了一个更快的实现。pcolormesh(*args, **kwargs)
:作用和pcolor
相同。但是它是另一个实现方式,并且返回不同的对象,它返回的是QuadMesh
对象。它的速度更快。其参数和用法与pcolor
相同。edgecolors
:除了pcolor
的edgecolors
之外,还多了一个'face'
,表示使用与四边形背景色相同的颜色。
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,
shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True,
wedgeprops=None, textprops=None, center=(0, 0), frame=False)
:绘制饼状图。x
:数据序列。每一块饼的权重为x/sum(x)
;如果sum(x)<=1
,则x
已经代表了每一块饼的权重,此时并不会除以sum(x)
。饼状图从x
轴开始,逆时针绘制。explode
:如果不是None
,则它给出了每个饼的径向偏移量。该偏移量表示:径向偏移除以半径。colors
:给出了每一块饼的颜色。可以为None
或者颜色序列labels
:给出了每个饼的字符串标签。可以为None
或者字符串序列autopct
:它可以为一个字符串,可以指定每个饼的数值标签,但是该字符串是fmt%pct
,通过pct
参数格式化,pct
为饼的比重(自动提供)。也可以是一个可调用对象。pctdistance
:若autopct
为None
,则忽略之。否则就是数值标签的径向距离,它是个相对距离,相对于半径。labeldistance
:控制了饼的字符串标签的径向距离,它是个相对距离,相对于半径。shadow
:一个布尔值,如果为True
,则绘制带阴影的饼状图startangle
:如果不是None
,则它可控制了第一块饼与x
轴的夹角radius
:一个标量,控制了饼状图的半径。如果为None
,则默认为 1counterclock
:一个布尔值。如果为True
,则为逆时针方向;否则为顺时针排列wedgeprops
:一个字典,控制了每一块饼的某些属性,如线型textprops
:一个字典,控制了饼的文字的一些属性center
:一个二元的元组,指定了饼状图的中心frame
:一个布尔值,控制是否绘制axes frame
(也就是背后的数轴)。发现版本1.5.3
中,开启它是个Bug
,图形混乱。
为了显示好看,建议使用
ax.set_aspect(1)
将Axes
的长宽比设置为 1, 此时的饼状图是个圆形(否则为椭圆)。plot(*args, **kwargs)
:绘制line
或者marker
。他返回line
的列表。最简单的用法是:
plot(x,y)
,其中x
为数据点的横坐标,y
为数据点的纵坐标。此时采用默认的线型和颜色。- 你也可以设置线型和颜色为
plot(x,y,'bo')
:'b'
代表颜色为蓝色,'o'
代表使用小圆圈标记数据点。'bo'
称作plot format string
- 你也可以省略
x
:plot(y)
。此时隐含着x
等于[0,1,...len(y-1)]
- 如果
x/y
为二维数组,那么每一行作为一组line
来绘制 - 如果你想一次绘制多条线,可以用
plot(x1,y1,'b+',x2,y2,'b-',x3,y3,'bo')
控制
marker
的字符串可以为:'-'/'--'/'-.'/':'/'.'/','/'o'/'v'/'^'/'<'/'>'/'1'/'2'/'3'/'4'/
's'/'p'/'*'/'h'/'H'/'+'/'x'/'D'/'d'/'|'/'_'
控制颜色的字符串可以为:
'b'/'g'/'r'/'c'/'m'/'y'/'k'/'w'
;你也可以指定它们的全名,如'red'
;或者指定十六进制字符串'#00ff00
;或者指定一个RGB/RGBA
元组:(0,1,0)/(0,1,0,1)
。默认情况下,不同的线采用不同的线型,它由
rc
的axes.prop_cycle
参数控制,并且是循环使用。这些参数都可以单独地作为关键字参数来设置。如果一个plot
绘制了多条线,则其参数对所有的线起作用。这些关键字全部用于设定Line2D
的属性。- 你也可以设置线型和颜色为
plot_date(x, y, fmt='o', tz=None, xdate=True, ydate=False, **kwargs)
:绘制日期相关的数据。它类似于plot()
方法,但是plot_data
的x
轴或者y
轴可能是日期相关的数据。x/y
:待绘制的点的坐标序列。如果是日期序列,则代表了从0001-01-01 UTC
以来的天数(浮点数)(它映射到整数 1)。日期必须大于等于 0(1代表第一天),且日期跨度大于一个月(31天)fmt
:plot format string
,如bo
tz
:指定时区。可以为时区字符串,也可以为tzinfo
实例或者None
xdate
:一个布尔值。如果为True
,则x
轴为时间序列ydate
:一个布尔值。如果为True
,则y
轴为时间序列- 其他参数用于设定
Line2D
的属性
注意:
plot_date()
使用默认的dates.AutoDateLocator/dates.AutoDateFormatter
。如果你希望使用自定义的,则你需要在调用plot_date()
之后调用方法来设置date ticker/date formatter
设置时区:
from datetime import timezone,timedelta
ax.plot_date(X,Y,tz=timezone(+timedelta(hours=23)))
设置日期格式化和位置:
from matplotlib.dates import AutoDateLocator,AutoDateFormatter,DateFormatter
autoloc = AutoDateLocator() #默认的 formatter
autofmt = AutoDateFormatter() #默认的 locator
myfmt = DateFormatter('%Y-%m-%d %H:%M:%S')#自定义的formatter,使用`strftime()`的格式化方式
ax.xaxis.set_major_locator(autodates) #设置时间间隔
ax.xaxis.set_major_formatter(myfmt) #设置时间显示格式
ax.xaxis.set_major_locator()
设置x
轴的主刻度的locator
ax.xaxis.set_major_formatter()
设置x
轴的主刻度的formatter
DateFormatter
:初始化字符串的解释与strftime()
相同- 常见的一些
DateLocator
有:MinuteLocator
、HourLocator
、DayLocator
、WeekdayLocator
、MonthLocator
、YearLocator
、AutoDateLocator
properties()
:返回一个字典,该字典中包含了axes
中的所有属性的键值对。quiver(*args, **kw)
:创建一个二维的场向量。常见的调用方式有:
quiver(U,V,**kw)
、quiver(U,V,C,**kw)
、quiver(X,Y,U,V,C,**kw)
、quiver(X,Y,U,V,C,**kw)
。其中U/V
为向量的x
轴分量和y
轴分量。X/Y
为绘制向量的起点坐标。C
用于指定每个箭头的颜色。- 如果为指定
X/Y
,则默认每个向量的起点从每个单元格生成。
关键字参数有:
units
:一个字符串,指定箭头的单位。除了箭头的长度以外,其他的度量都是以该单位为准。可以为:'width'/'height'
:以axes
的宽度/高度为单位'dots'/'inches'
:以像素点/英寸为单位'x'/'y'/'xy'
:以数据坐标系下的X/Y
为单位,而xy'
表示数据坐标系下的单位矩形的对角线为单位。
angles
:指定向量的角度。正方形可能因为X/Y
轴缩放尺度不同而显示为长方形。可以为'uv'
,表示只采用U,V
的值计算;可以为'xy'
,表示角度计算时考虑X
轴与Y
轴的缩放尺度。scale
:一个浮点数,决定缩放比例。它和scale_units
决定了箭头的全长。假如向量的长度计算得到为 10,那么假如scale
为 2, 而scale_units
为dots
,那么该向量的长度为5
像素点。scale_units
:一个字符串,指定缩放比例的单位。可以为'width'/'height'/'dots'/'inches'/'x'/'y'/'xy'
width
:一个标量,指定箭头的宽度,单位由units
参数指定headwitdh
:一个标量,指定箭头的头部的宽度,单位由units
参数指定headlength
:一个标量,指定箭头的头部的长度,单位由units
参数指定headaxislength
:一个标量,指定的是箭头的头部的左半边小三角与箭杆的相交的长度。单位由units
参数指定minshaft
:一个标量,Length below which arrow scales, in units of head length. 。不要设置成小于 1,否则图形很难看minlength
:一个标量,指定所有箭头的最短长度(单位由units
参数指定)。如果有的箭头长度小于它,则绘制成一个点。pivot
:一个字符串,控制了箭头旋转的中心。可以为'tail'/'mid'/'middle'/'tip'
。tip
表示箭头的尖尖。color
:给出了箭头的颜色。如果给出了C
参数,则该参数被忽略。其他参数控制了
PolyCollection
的属性
- 如果为指定
quiverkey(*args, **kw)
:给quiver
设置key
。常用的调用方式为:quiverkey(Q,X,Y,U,label,**kw)
。Q
:一个Quiver
实例,由quiver()
返回X/Y
:key
放置的位置,都是标量U
:key
的长度,都是标量label
:一个字符串,指定了标记。coordinates
:一个字符串,指定了X/Y
的坐标系。'axes'
:axes
坐标系,(0,0)
为axes
的左下角,(1,1)
为axes
的右上角。'figure'
:figure
坐标系,(0,0)
为figure
的左下角,(1,1)
为figure
的右上角。'data'
:data
坐标系'inches'
:为figure
坐标系,但是以像素点为基准。(0,0)
为左下角
color
:重写了Q
的color
labelpos
:放置标记的位置,可以为'N'/'S'/'E'/'W'
labelsep
:给出了标记和箭头的距离,单位为英寸labelcolor
:给出了标记的颜色fontproperties
:一个字典或者FontProperties
实例,设置了标记的字体。其他的关键字参数用于重写
quiver
的一些属性。
remove()
:从figure
中移除本axes
。除非重绘figure
,否则看不出来效果。scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None, vmax=None,
alpha=None, linewidths=None, verts=None, edgecolors=None, **kwargs)
:绘制散点图。返回一个PathCollection
实例。x/y
:数据的x
坐标和y
坐标,要求它们形状为(n,)
s
:指定散点的尺寸,可以为标量,也可以为一个长度为n
的序列c
:指定散点的颜色。可以为一个颜色,或者颜色序列marker
:指定散点的类型,默认为'o'
。可以为'.',',','o','v','^','<','>','1','2','3','4','s','p',
'*','h','H','+','x','D','d','|','_','None',None,' ','','$...$'
之一。也可以为一个Path
实例。也可以是一个元组(numsided,style,angle)
:numsided
指定了边的数量style
:可以为0
(正多边形);1
(星星状的符号);2
(一个*
);3
(一个圆,此时numsided,angle
被忽略)angle
:指定了散点旋转的角度(按照角度制而不是弧度制)
cmap
:设定一个colormap
。可以是Colormap
实例,或者它的名字。只有当c
参数为一列浮点数时,有效norm
:一个Normalize
实例,用于将亮度调整到0~1
vmin,vmax
:一个标量,用于辅助默认的norm
调整亮度(如果你传入了一个Normalize
实例给norm
,则该参数忽略)alpha
:一个标量,设置透明度linewidths
:一个标量或者序列,设置线宽edgecolors
:设定边线的颜色,可以为一个颜色,或者颜色序列其他参数用于设定
Collection
参数
semilogx(*args, **kwargs)
:它类似plot()
,只是将x
轴设置为对数坐标。除了多了下面的参数外,其他设置与plot()
一样。basex
:一个大于 1 的标量,用于设置对数的底数subx
:一个序列或者None
。用于设置x
轴的主要刻度值。默认采用自动设定nonposx
:如果为'mask'
,则x
的负数或者零将被视作无效的数;如果为'clip'
,则x
的负数或者零将被视作一个非常小的正数(因为对数的自变量要大于零)
semilogy(*args, **kwargs)
:它类似plot()
,只是将y
轴设置为对数坐标。除了多了下面的参数外,其他设置与plot()
一样。basey
:一个大于 1 的标量,用于设置对数的底数suby
:一个序列或者None
。用于设置y
轴的主要刻度值。默认采用自动设定nonposy
:如果为'mask'
,则y
的负数或者零将被视作无效的数;如果为'clip'
,则y
的负数或者零将被视作一个非常小的正数(因为对数的自变量要大于零)
spy(Z, precision=0, marker=None, markersize=None, aspect='equal',
origin='upper', **kwargs)
:绘制矩阵中的非零值。Z
:待绘制的二维矩阵,它和precision
决定了绘制区域。坐标点(i,j)
对应于Z[j,i]
,即列对应于x
轴。precision
:只有Z
中的那些大于precision
的值才被绘制marker
:用它来表示Z
中的非零值markersize
:marker
的大小。aspect
:高宽比origin
:参考imshow
的origin
stem(*args, **kwargs)
:绘制stem
图。其调用方式为:stem(y, linefmt='b-', markerfmt='bo', basefmt='r-')
stem(x, y, linefmt='b-', markerfmt='bo', basefmt='r-')
其中:`linefmt`决定了垂线的格式。`markerfmt`决定了每个`fmt`的格式。`x`决定了每条垂线的位置(如果未提供,则为`[0,1,...len(y)-1]`)。`y`序列决定了每条垂线的高度。 `basefmt`决定了位于`y=0`这条基准直线的格式。
step(x, y, *args, **kwargs)
:绘制阶梯图。调用方式为step(x, y, *args, **kwargs)
x/y
:都是一维序列,并且假设x
为单调递增的(如果不满足,也不报错)where
:指定分步类型。可以为'pre'/'post'/'mid'
- 其他参数与
plot()
相同
streamplot(x, y, u, v, density=1, linewidth=None, color=None, cmap=None, norm=None,
arrowsize=1, arrowstyle='-|>', minlength=0.1,
transform=None, zorder=1, start_points=None)
:绘制向量场流线。x/y
:一维数组,给出了网格的坐标u/v
:二维数组,给出了每个网格的向量。其行数等于y
的长度,列数等于x
的长度density
:一个浮点数或者浮点数的二元元组。控制了绘制向量场的密度。linewidth
:标量或者二维数组,给出了每个向量箭头的线宽color
:标量或者二维数组,给出了每个向量箭头的颜色cmap
:一个Colormap
实例。当color
是一个二维数组时,它配合使用,给出了每个向量箭头的颜色norm
:一个Normalize
实例。当color
是一个二维数组时,它配合使用,将颜色亮度调整为0~1
arrowsize
:一个浮点数,给出了箭头缩放比例arrowstyle
:一个字符串,给出了箭头的类型。minlength
:一个浮点数,限定了最小的向量长度start_points
:它是一个N*2
的数组,N
流线起点的个数,给出了流线起始点的位置
table(**kwargs)
:添加一个表格,返回一个table.Table
实例。调用方式为:table(cellText=None, cellColours=None,
cellLoc='right', colWidths=None,
rowLabels=None, rowColours=None, rowLoc='left',
colLabels=None, colColours=None, colLoc='center',
loc='bottom', bbox=None)
text(x, y, s, fontdict=None, withdash=False, **kwargs)
:添加文本,返回一个Text
实例。s
:一个字符串,被添加的文本x/y
:一个标量,文本被添加的坐标fontdict
:一个字典,给出了字体属性。withdash
:一个布尔值。如果为True
,则创建一个TextWithDash
实例而不是Text
实例。- 其他参数用于控制
Text
属性
tick_params(axis='both', **kwargs)
:控制tick
和tick label
。axis
:一个字符串,指定要控制那个轴。可以为'x'/'y'/'both'
reset
:一个布尔值。如果为True
,那么在进行处理其他关键字参数之前,先恢复默认值。默认为False
which
:一个字符串,指定控制主刻度还是次刻度。可以为'major'/'minor'/'both'
direction
:一个字符串,控制将刻度放置在axes
里面还是外面。可以为'in'/'out'/'inout'
length
:一个标量值。给出了每个刻度线的长度(就是那个小竖线),单位为像素点width
:一个标量值。给出了每个刻度线的宽度(就是那个小竖线),单位为像素点color
:给出刻度线的颜色pad
:一个标量值,给出了刻度线和刻度label
之间的距离,单位为像素点labelsize
:一个标量值,给出了刻度label
的字体大小。可以为数值,单位为像素点。也可以为字符串,如large'
labelcolor
:给出了刻度label
的颜色colors
:同时调整刻度线的颜色和刻度label
的颜色bottom/top/left/right
:一个布尔值或者字符串'on'/'off'
。控制是否绘制对应位置的刻度线labelbottom/labeltop/labelleft/labelright
:一个布尔值或者字符串'on'/'off'
。控制是否绘制对应位置的刻度label
vlines(x, ymin, ymax, colors='k', linestyles='solid', label='', **kwargs)
:绘制一群垂直线。x
:标量或者一维数组,给出了垂线的位置ymin/ymax
:给出了垂线的起始和终止位置。如果是个标量,则所有垂线共享该值colors
:给出垂线的颜色linestyles
:给出了垂线的线型label
:一个字符串- 其他关键字参数设置
LineCollection
参数
xcorr(x, y, normed=True, detrend=<function detrend_none>, usevlines=True,
maxlags=10, **kwargs)
:绘制互相关图。参数解释参考acorr()
自相关函数。
c. Axis类
matplotlib.axis.Axis
实例处理tick line
、grid line
、tick label
以及axis label
的绘制,它包括坐标轴上的刻度线、刻度label
、坐标网格、坐标轴标题。通常你可以独立的配置y
轴的左边刻度以及右边的刻度,也可以独立地配置x
轴的上边刻度以及下边的刻度。- 刻度包括主刻度和次刻度,它们都是
Tick
刻度对象。
- 刻度包括主刻度和次刻度,它们都是
Axis
也存储了数据用于内部的缩放以及自适应处理。它还有Locator
实例和Formatter
实例用于控制刻度线的位置以及刻度label
。每个
Axis
都有一个.label
属性,也有主刻度列表和次刻度列表。这些tick
是XTick
和YTick
的实例,他们存放着实际的line primitive
以及text primitive
来渲染刻度线以及刻度文本。刻度是动态创建的,只有在需要创建的时候才创建(比如缩放的时候)。
Axis
也提供了一些辅助方法来获取刻度文本、刻度线位置等等:Axis.get_major_ticks()
:获取主刻度列表(一个Tick
对象的列表)Axis.get_minor_ticks()
:获取次刻度列表(一个Tick
对象的列表)Axis.get_majorticklabels()
:获取主刻度label
列表(一个Text
对象的列表)Axis.get_majorticklines()
:获取主刻度线(一个Line2D
对象的列表)Axis.get_ticklocs()
:获取刻度线位置的列表。 可以通过minor=True|False
关键字参数控制输出minor
还是major
的tick location
。Axis.get_ticklabels()
:获取刻度label
列表(一个Text
实例的列表)。 可以通过minor=True|False
关键字参数控制输出minor
还是major
的tick label
。Axis.get_ticklines()
:获取刻度线列表(一个Line2D
实例的列表)。 可以通过minor=True|False
关键字参数控制输出minor
还是major
的tick line
。Axis.get_scale()
:获取坐标轴的缩放属性,如'log'
或者'linear'
Axis.get_view_interval()
:获取内部的axis view limits
实例Axis.get_data_interval()
:获取内部的axis data limits
实例Axis.get_gridlines()
:获取grid line
的列表Axis.get_label()
:获取axis label
(一个Text
实例)Axis.get_label_text()
:获取axis label
的字符串Axis.get_major_locator()
:获取major tick locator
(一个matplotlib.ticker.Locator
实例)Axis.get_minor_locator()
:获取minor tick locator
(一个matplotlib.ticker.Locator
实例)Axis.get_major_formatter()
:获取major tick formatter
(一个matplotlib.ticker.Formatter
实例)Axis.get_minor_formatter()
:获取minor tick formatter
(一个matplotlib.ticker.Formatter
实例)Axis.grid(b=None,which='major',**kwargs)
:一个开关,用于控制major
或者minor
的tick
的on|off
Axis 方法
axis_date(tz=None)
:将x
轴视作时间轴cla()
:清除axis
get_xxx()
方法:参考前面叙述的内容set_xxx()
方法:对应的设置方法。
获取刻度线或者刻度
label
之后,可以设置其各种属性,如可以对刻度label
旋转 30度:for line in axis.get_majorticklabels():
line.set_rotation(30)
d. Tick类
matplotlib.axis.Tick
类是从Figure
-->Axes
-->Tick
这个container
体系中最末端的container
。Tick
容纳了tick
、grid line
以及tick
对应的label
。所有的这些都可以通过Tick
的属性获取:Tick.tick1line
:一个Line2D
实例Tick.tick2line
:一个Line2D
实例Tick.gridline
:一个Line2D
实例Tick.label1
:一个Text
实例Tick.label2
:一个Text
实例Tick.gridOn
:一个布尔值,决定了是否绘制tickline
Tick.tick1On
:一个布尔值,决定了是否绘制1st tickline
Tick.tick2On
:一个布尔值,决定了是否绘制2nd tickline
Tick.label1On
:一个布尔值,决定了是否绘制1st tick label
Tick.label2On
:一个布尔值,决定了是否绘制2nd tick label
y
轴分为左右两个,因此tick1*
对应左侧的轴;tick2*
对应右侧的轴。x
轴分为上下两个,因此tick1*
对应下侧的轴;tick2*
对应上侧的轴。方法有:
get_loc()
:以标量的形式返回Tick
的坐标get_pad()
:返回Tick
的label
和刻度线之间的距离(单位为像素点)set_label(s)/set_label1(s)/set_label2(s)
:设置label
set_pad(val)
:设置Tick
的label
和刻度线之间的距离(单位为像素点)