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的单元不被显示。同时返回的结果中,这些单元返回nancmax:一个标量值。那些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的宽高比来匹配extentNone:默认由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.normvmin/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 imagefilternorm/filterrad:用于过滤- 其他参数用于调整
Artist属性
legend(*args, **kwargs):创建一个图例。- 最简单的方式:你首先创建一个
Axes,然后在其中添加lines,然后直接调用ax.legend()即可。此时那些label非空的线将被图例注释 - 你也可以采用下面面向对象的方案:线创建
line,然后调用line.set_label(),然后调用ax.legend()。此时的逻辑更清晰 - 如果你不想让某个
line被图例注释,则它的label要么为空字符串,要么为以下划线开始。 - 还有一种直接控制图例的方式:它直接显式指定了被注释的
line和对应的labelax.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 locatoraxis:一个字符串,指定控制那个轴。可以为'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,如botz:指定时区。可以为时区字符串,也可以为tzinfo实例或者Nonexdate:一个布尔值。如果为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轴的主刻度的locatorax.xaxis.set_major_formatter()设置x轴的主刻度的formatterDateFormatter:初始化字符串的解释与strftime()相同- 常见的一些
DateLocator有:MinuteLocator、HourLocator、DayLocator、WeekdayLocator、MonthLocator、YearLocator、AutoDateLocator
学员评价