Axes 的一些方法
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
学员评价