课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
20分钟

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):从xminxmax绘制一系列的水平线。这些水平线的纵坐标由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实例。默认由rcimage.cmap指定。如果XRGB/RGBA,则忽略该参数
    • aspect:一个字符串,指定图片的缩放。可以为:
      • 'auto':缩放图片的宽高比,是的它匹配axes
      • 'equal':当extent参数为None时,修改axes的宽高比,使得它匹配图片;如果extent参数不是None,则修改axes的宽高比来匹配extent
      • None:默认由rcimage.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):设置Axesmargin。你可以通过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都是二维数组,并且XY的尺寸比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的设置
    • edgecolorsNone或者'none'或者一个颜色或者一个颜色序列。用于设定边的颜色
    • 其他参数设置PopyCollection属性

  • pcolorfast(*args, **kwargs):用法和pcolor相同,它是一个实验性质的,提供了一个更快的实现。
  • pcolormesh(*args, **kwargs):作用和pcolor相同。但是它是另一个实现方式,并且返回不同的对象,它返回的是QuadMesh对象。它的速度更快。其参数和用法与pcolor相同。
    • edgecolors:除了pcoloredgecolors之外,还多了一个'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:若autopctNone,则忽略之。否则就是数值标签的径向距离,它是个相对距离,相对于半径。
    • labeldistance:控制了饼的字符串标签的径向距离,它是个相对距离,相对于半径。
    • shadow:一个布尔值,如果为True,则绘制带阴影的饼状图
    • startangle:如果不是None,则它可控制了第一块饼与x轴的夹角
    • radius:一个标量,控制了饼状图的半径。如果为None,则默认为 1
    • counterclock:一个布尔值。如果为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
    • 你也可以省略xplot(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)。 默认情况下,不同的线采用不同的线型,它由rcaxes.prop_cycle参数控制,并且是循环使用。这些参数都可以单独地作为关键字参数来设置。如果一个plot绘制了多条线,则其参数对所有的线起作用。这些关键字全部用于设定Line2D的属性。

  • plot_date(x, y, fmt='o', tz=None, xdate=True, ydate=False, **kwargs):绘制日期相关的数据。它类似于plot()方法,但是plot_datax轴或者y轴可能是日期相关的数据。
    • x/y:待绘制的点的坐标序列。如果是日期序列,则代表了从 0001-01-01 UTC以来的天数(浮点数)(它映射到整数 1)。日期必须大于等于 0(1代表第一天),且日期跨度大于一个月(31天)
    • fmtplot 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有:MinuteLocatorHourLocatorDayLocatorWeekdayLocatorMonthLocatorYearLocatorAutoDateLocator