matplotlib---2.Artist【container/primitive】
一、matplotlib
1.matplotlib
有三个层次的API
matplotlib.backend_bases.FigureCanvas
:代表了一个绘图区,在这个绘图区上图表被绘制matplotlib.backend_bases.Renderer
:代表了渲染器,它知道如何在绘图区上绘图。matplotlib.artist.Artist
:代表了图表组件,它知道如何利用渲染器在绘图区上绘图。
通常用于有95%以上的时机都是与matplotlib.artist.Artist
类打交道,它是高层次的绘图控制。
2.matplotlib
中有两种Artist
-
primitive
:代表了我们在绘图区域上绘制的基础的绘图组件,比如Line2D
,Rectangle
,Text
以及AxesImage
等等。 -
container
:代表了放置primitive
的那些绘图组件。比如Axis
、Axes
以及Figure
,如图所示
3.matplotlib的标准使用流程
- 创建一个
Figure
实例对象fig
- 使用
fig
实例创建一个或者多个Axes
实例,或者创建一个或者多个Subplot
实例 - 使用
Axes
实例的方法来创建primitive
4.Artist的属性
(1)每个在图形中出现的元素都是Artist,
其属性有:
-
Figure.patch
属性:是一个Rectangle
,代表了图表的矩形框,它的大小就是图表的大小, 并且可以通过它设置图表的背景色和透明度。 -
Axes.patch
属性:也是一个Rectangle
,代表了绘图坐标轴内部的矩形框(白底黑边), 通过它可以设置Axes
的颜色、透明度等。 -
所有的
Artist
有下列属性:.alpha
属性:透明度。值为0--1之间的浮点数.animated
属性:一个布尔值,表示是否用于加速动画绘制.axes
属性:返回这个Artist
所属的axes
,可能为None
.clip_box
属性:用于剪切Artist
的bounding box
.clip_on
属性:是否开启clip
.clip_path
属性:Artist
沿着该path
执行clip
.contains
属性:一个picking function
用于测试Artist
是否包含pick point
.figure
属性:该Artist
所属的Figure
,可能为None
.gid
属性:该Artist
的id
字符串.label
:一个text label
.picker
:一个python object
用于控制object picking
.transform
:转换矩阵.url
属性:一个url string
,代表本Artist
.visible
:布尔值,控制Artist
是否绘制.zorder
:决定了Artist
的绘制顺序。zorder
越小就越底层,则越优先绘制。
(2)获取属性:
- fig.get_alpha() # 获取fig的alpha属性值
- matplotlib.artist.getp(fig) # 一次获取
fig
的所有属性。 pyplot.getp(fig,"alpha")
来获取属性(一次只能返回一个属性),如果指定属性名,则返回对象的该属性值;如果不指定属性名,则返回对象的所有的属性和值。
(3)设置属性:
- fig.set_alpha(0.5) # 设置fig的alpha值为0.5
- fig.set(alpha=0.5,zorder=2) # 一次设置多个属性
pyplot.setp(fig,alpha=0.5,zorder=2)
来设置属性(一次可以设置多个属性)。
举例:
import matplotlib.pyplot as plt fig = plt.figure() #创建图形 fig.patch # 图表矩形 <matplotlib.patches.Rectangle at 0x1e16abda940> ax = fig.add_axes([0,0,1,1]) # left,bottom,width,height ax.patch # Axes矩形 <matplotlib.patches.Rectangle at 0x1e16bfbec88> import matplotlib matplotlib.artist.getp(fig) # 获取所有属性 agg_filter = None alpha = None animated = False axes = [<matplotlib.axes._axes.Axes object at 0x000001E16... children = [<matplotlib.patches.Rectangle object at 0x000001E... clip_box = None clip_on = True clip_path = None constrained_layout = False constrained_layout_pads = (0.04167, 0.04167, 0.02, 0.02) contains = None default_bbox_extra_artists = [<matplotlib.axes._axes.Axes object at 0x000001E16... dpi = 72.0 edgecolor = (1.0, 1.0, 1.0, 0.0) facecolor = (1.0, 1.0, 1.0, 0.0) figheight = 4.0 figure = None figwidth = 6.0 frameon = True gid = None label = path_effects = [] picker = None rasterized = None size_inches = [6. 4.] sketch_params = None snap = None tight_layout = False transform = IdentityTransform() transformed_clip_path_and_affine = (None, None) url = None visible = True window_extent = TransformedBbox( Bbox(x0=0.0, y0=0.0, x1=6.0, ... zorder = 0 plt.getp(fig, "constrained_layout_pads") # (0.04167, 0.04167, 0.02, 0.02)
二、container
1. Figure类
1.1 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
1.2 当你执行Figure.add_subplot()
或者Figure.add_axes()
时,这些新建的Axes
都被添加到Figure.axes
列表中。
1.3 由于Figure
维持了current axes
,因此你不应该手动的从Figure.axes
列表中添加删除元素,而是要通过Figure.add_subplot()
、Figure.add_axes()
来添加元素,通过Figure.delaxes()
来删除元素。但是你可以迭代或者访问Figure.axes
中的Axes
,然后修改这个Axes
的属性。
1.4 可以通过Figure.gca()
获取current axes
,通过Figure.sca()
设置current axes
。
1.5 Figure
也有它自己的text
、line
、patch
、image
。你可以直接通过add primitive
语句直接添加。但是注意Figure
默认的坐标系是以像素为单位,你可能需要转换成figure
坐标系:(0,0)表示左下点,(1,1)表示右上点。
举例:
import matplotlib.pyplot as plt import matplotlib fig = plt.figure() #创建图形 ax = fig.add_axes([0,0,1,1]) ax2 = fig.add_subplot(221) l1 = matplotlib.lines.Line2D([0,1],[0,1],transform=fig.transFigure,figure=fig) l2 = matplotlib.lines.Line2D([0,1],[1,0],transform=fig.transFigure,figure=fig) fig.lines.extend([l1,l2]) fig.canvas.draw() fig.show()
1.6 创建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.7 Figure的一些方法
(1)add_axes
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)
来将其放回。
(2)add_subplot
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'
add_axes和add_subplot的区别:
- 生成子图subplot的时候,必须带着轴域(Axes)方法,客观上就是生成了一个可以画图的子图;
- add_subplot方法在生成子图过程,简单明了,而用add_axes方法,则生成子图的灵活性更强,完全可以实现add_subplot方法的功能,可以控制子图显示位置,甚至实现相互重叠的效果。
(3)autofmt_xdate
autofmt_xdate(bottom=0.2, rotation=30, ha='right')
功能:用于设置Date ticklabel
的位置。该函数主要用于当xtick
为日期,可能会重叠,因此可以旋转一个角度
参数:
bottom:
设置距离subplot
底部的位置。rotation:
设置了xtick label
的旋转角度。ha:
设置xtick label
的对其方式。
(4)clear()
功能:清除一个figure
(5)clf()
clf(keep_observers=False)
功能:清除一个figure
如果keep_observers=True
,则gui
仍然会跟踪figure
中的axes。
(6)colorbar()
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 | 如果cax为None,则将创建一个新的cax作为Axes的实例。 如果ax是Subplot的实例且use_gridspec为True,则使用grid_spec模块将cax创建为Subplot的实例
(7)delaxes(a)
功能:从figure
中移除axes
(8)gca(**kwargs)
功能:返回current axes
,如果不存在则创建一个。
(9)get_children()
功能:获取figure
中包含的artists
(10)get_dpi/get_edgecolor/get_facecolor/get_figheight/get_figwidth/get_frameon/get_tight_layout...
功能:获取对应的属性值
(11)get_size_inches()
功能:返回fig
的当前尺寸(单位为英寸,1in=2.54cm
)
(12)legend()
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
,则绘制图例的背景框。否则不绘制。
(13)savefig()
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
,则图形背景透明
(14)sca(a)
功能:设置a
为current axes
并返回它
(15)set_dpi/set_edgecolor...
功能:设置相关属性
(16)show(warn=True)
功能:显示图像。如果warn=True
,则开启警报
(17)subplots_adjust()
subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=None)
功能:调整subplot
的位置
(18)suptitle(t, **kwargs)
功能:设置图像标题
参数:
t:
为标题字符串。关键字参数就是Text
对象的参数:x
:在图形坐标系中,标题的横坐标(范围 0~1)y
:在图形坐标系中,标题的纵坐标(范围 0~1)horizontalalignment
:标题水平对齐方式,默认为'center'
verticalalignment
:标题垂直对齐方式,默认为'top'
fontsize
:字体大小
(19)text(x, y, s, *args, **kwargs)
功能:添加文本
参数:
x
:在图形坐标系中,标题的横坐标(范围 0~1)y
:在图形坐标系中,标题的纵坐标(范围 0~1)s
:文本字符串
(20)tight_layout()
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
之间的高距/宽距。
2. Axes类
2.1 Axes
类是matplotlib
的核心,Axes
代表了plotting area
。大量的用于绘图的Artist
存放在它内部,并且它有许多辅助方法来创建和添加Artist
给它自己,而且它也有许多赋值方法来访问和修改这些Artist
。
它有许多方法用于绘图,如.plot()
、.text()
、.hist()
、.imshow()
等方法用于创建大多数常见的primitive
(如Line2D
,Rectangle
,Text
,Image
等等)。这些方法会创建primitive Artist
实例,并且添加这些实例到对应的container
上去,然后必要的时候会绘制这些图形。
2.2 Subplot
就是一个特殊的Axes
,其实例是位于网格中某个区域的Subplot
实例。其实你也可以在任意区域创建Axes
,通过Figure.add_axes([left,bottom,width,height])
来创建一个任意区域的Axes
,其中left,bottom,width,height
都是[0-1]之间的浮点数,他们代表了相对于Figure
的坐标。
举例:
import matplotlib.pyplot as plt import matplotlib fig = plt.figure() ax = fig.add_axes([0.15,0.1,0.7,0.3]) x = np.arange(0.0,1.0,0.01) y = np.sin(2 * np.pi * x) line, = ax.plot(x,y,color='blue',lw=2) plt.show()
2.3 Axes
包含了一个.patch
属性,对于笛卡尔坐标系而言,它是一个Rectangle
;对于极坐标而言,它是一个Circle
。这个.patch
属性决定了plotting region
的形状、背景和边框。
举例:
import matplotlib.pyplot as plt import matplotlib fig = plt.figure() # 创建新图表 ax = fig.add_subplot(111) # 创建Axes rect = ax.patch rect.set_color('yellow') plt.show()
2.4 当调用Axes.plot()
方法时,该方法会创建一个matplotlib.lines.Line2D
实例,然后会利用传给.plot()
的关键字参数来更新该Line2D
的属性,然后将这个Line2D
添加到Axes.lines
列表中。该方法返回的刚创建的Line2D
列表,因为你可以传递多个(x,y)
值从而创建多个Line2D
。
当调用Axes.hist()
方法时,类似于.plot()
方法,不过它会添加patches
到Axes.patches
列表。
举例:
import matplotlib.pyplot as plt import matplotlib import numpy as np fig = plt.figure() # 创建新图表 ax = fig.add_subplot(111) # 添加Axes x, y = np.random.rand(2,200) line, = ax.plot(x,y,'-',color='blue',linewidth=10) n,bins,rectangles = ax.hist(np.random.randn(200),50,facecolor='green') rectangles #<a list of 50 Patch objects> fig.show()
2.5 你不应该直接通过Axes.lines
和Axes.patches
列表来添加图表。因为当你通过.plot()
和.hist()
等方法添加图表时,matplotlib
会做许多工作而不仅仅是添加绘图组件到Axes.lines
或者Axes.patches
列表中。
但是你可以使用Axes
的辅助方法.add_line()
和.add_patch()
方法来添加。
import matplotlib.pyplot as plt import matplotlib import numpy as np fig = plt.figure() # 创建新图表 ax = fig.add_subplot(111) rect = matplotlib.patches.Rectangle((1,1),width=5,height=12)#创建Rectangle type(rect.axes) # 未绑定Axes NoneType rect.get_transform() CompositeGenericTransform( BboxTransformTo( Bbox(x0=1.0, y0=1.0, x1=6.0, y1=13.0)), Affine2D( [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]])) ax.add_patch(rect) # rect添加到ax rect.axes # 绑定了Axes <matplotlib.axes._subplots.AxesSubplot at 0x1e16c330cc0>
2.6 下面是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
列表中。
2.7 另外Axes
还包含两个最重要的Artist container
:
ax.xaxis
:XAxis
对象的实例,用于处理x
轴tick
以及label
的绘制ax.yaxis
:YAxis
对象的实例,用于处理y
轴tick
以及label
的绘制
Axes
包含了许多辅助方法来访问和修改XAxis
和YAxis
,这些辅助方法其实内部调用的是XAxis
和YAxis
的方法。因此通常情况下你不需要直接调用XAxis
和YAxis
的方法。
ax = fig.add_axes([0.15,0.1,0.7,0.3]) ax.xaxis # <matplotlib.axis.XAxis at 0x1e16c38fa58> ax.yaxis # <matplotlib.axis.YAxis at 0x1e16c0ed2e8>
2.8 Axes的方法
(1)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
举例:
import matplotlib.pyplot as plt import matplotlib import numpy as np x,y = np.random.randn(2,100) fig = plt.figure() # 创建新图表 ax1 = fig.add_subplot(211) ax1.acorr(x,usevlines=True,maxlags=50,normed=False,lw=2) ax1.grid(True) ax1.axhline(0,color='black',lw=2) ax2 = fig.add_subplot(212,sharex=ax1) ax2.acorr(x,usevlines=False,maxlags=50,normed=True,lw=2) ax2.grid(True) ax2.axhline(0,color='black',lw=2) plt.show()
(2)add_artist(a)
功能:添加a
(一个Artist
对象)到axes
上
(3)add_collection(collection, autolim=True)
功能:添加Collection
实例到axes
上
(4)add_container(container)
功能:添加Container
实例到axes
上
(5)add_image(image)
功能:添加Image
实例到axes
上
(6)add_line(line)
功能:添加Line2D
实例到axes
上
(7)add_patch(p)
功能:添加Patch
实例到axes
上
(8)add_table(tab)
功能:添加Table
实例到axes
上
(9)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
的部分将会不可见
举例:
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(1,1,1) s = "anno" ax.annotate(s,xy=(0,0.5),xytext=(0.5,0.5),xycoords="axes fraction", textcoords="axes fraction",arrowprops={"arrowstyle":"->","color":"green"},color="red",fontsize=24) ax.set_xlim(-1,1) ax.set_ylim(-1,1) # fig.show()
(10)autoscale_view(tight=None, scalex=True, scaley=True)
功能:自动调整坐标轴的范围。如果你不想自动调整x轴,则scalex=False即可,y轴类似。
(11)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
的属性
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.arrow(0.0,0.5,0.3,0.3,width=0.05,head_width=0.1,head_length=0.1, shape='left',facecolor='black',edgecolor='blue' ) ax.set_xlim(-1,1) ax.set_ylim(-1,1) # fig.show()
(12)axhline(y=0, xmin=0, xmax=1, **kwargs)
功能:绘制水平线
y
:一个标量,默认为 0.给出了水平的y
坐标(采用data
坐标系)xmin
:一个标量,默认为 0。给出了水平线的起始横坐标。最大为 1(表示最右侧)(使用Axes
坐标系)xmax
:一个标量,默认为 1。 给出了水平线的终点横坐标。最小为 0 (表示最左侧)(使用Axes
坐标系)- 其他关键字参数控制
Line2D
的属性
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.axhline(y=0.2,xmin=0,xmax=1,lw=4,color='red') ax.set_xlim(-1,1) ax.set_ylim(-1,1) # fig.show()
(13)axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs)
功能:绘制水平区域。
参数:
ymin/ymax
:给出了水平区域的y
坐标的下界和上界,采用data
坐标系xmin/xmax
:给出了水平区域的左侧和右侧的位置。采用Axes
坐标系,最小为0,最大为 1- 其他关键字参数控制
Line2D
的属性
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.axhspan(ymin=0,ymax=0.2,xmin=0,xmax=0.5,facecolor="yellow",edgecolor="blue") ax.set_xlim(-1,1) ax.set_ylim(-1,1)
(14)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
:待设置的轴的最小/最大值
(15)axvline(x=0, ymin=0, ymax=1, **kwargs)
功能:绘制垂直线
参数:
x
:一个标量,默认为 0.给出了垂直线的x
坐标(采用data
坐标系)ymin
:一个标量,默认为 0。给出了垂直线的起始纵坐标。最大为 1(表示最上侧)(使用Axes
坐标系)ymax
:一个标量,默认为 1。 给出了垂直线的终点纵坐标。最小为 0 (表示最下侧)(使用Axes
坐标系)- 其他关键字参数控制
Line2D
的属性
(16)axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
功能:绘制垂直区域
参数:
xmin/xmax
:给出了垂直区域的x
坐标的左侧和右侧,采用data
坐标系ymin/ymax
:给出了垂直区域的上侧和下侧的位置。采用Axes
坐标系,最小为0,最大为 1- 其他关键字参数控制
Line2D
的属性
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.axvline(x=0.2,ymin=0,ymax=1,lw=4,color='yellow') print(ax.axis(xmin=-1,xmax=2,ymin=-3,ymax=4))
(17)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
,此时就是上述的“标量的序列”。
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.bar(left=0,height=1,width=0.2,bottom=-1,color='red',edgecolor="green",lw=4, tick_label="vertical",xerr=0.3,yerr=0.5,ecolor="orange",capsize=5,align="center", orientation="vertical") ax.bar(left=-1,height=0.5,width=0.2,bottom=0,color='green',edgecolor="red",lw=2, tick_label="horizontal",xerr=0.2,yerr=0.3,ecolor="orange",capsize=8,align="center", orientation="horizontal") ax.set_xlim(-1,1) ax.set_ylim(-1,1)
(18)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')
。
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.bar(left=-1,height=0.5,width=0.2,bottom=0.4,color='green',edgecolor="red",lw=2, tick_label="barhoz",xerr=0.2,yerr=0.3,ecolor="orange",capsize=8,align="center", orientation="horizontal") ax.barh(left=-1,height=0.5,width=0.2,bottom=-0.4,color='green',edgecolor="red",lw=2, tick_label="aa",xerr=0.2,yerr=0.3,ecolor="orange",capsize=8,align="center", orientation="horizontal") ax.set_xlim(-1,1) ax.set_ylim(-1,1)
(19)cla()/clear()
:清除Axes
(20)clabel(CS, *args, **kwargs)
功能:为等高线添加label
。
参数:
CS
:由contour
函数返回的ContourSet
,代表一组等高线fontsize
:label
的字体大小,或者给出字符串'smaller'/'x-large'
colors
:如果为None
,则使用对应的等高线的颜色。如果为一个字符串指定的颜色,则所有的等高线label
使用该颜色。如果为一组颜色,则不同的等高线的label
按顺序使用其中的不同的颜色。inline
:一个布尔值。如果为True
,则移除label
覆盖的底层的等高线(嵌入式);否则就全部绘制(重叠式)inline_spacing
:一个浮点数,单位为像素点。它控制了label
距离等高线的距离
delta = 0.025 x = np.arange(-3,3,delta) y = np.arange(-2,2,delta) X,Y = np.meshgrid(x,y) Z = 3*X**2+4*Y**2 fig = plt.figure(figsize=(10,4)) ax1 = fig.add_subplot(121) CS1 = ax1.contour(X,Y,Z) ax1.clabel(CS1,fontsize=10,inline=1) ax1.set_title('inline') ax2 = fig.add_subplot(122) CS2 = ax2.contour(X,Y,Z) ax2.clabel(CS2,fontsize=10,inline=0,colors='red') ax2.set_title('no_inline')
(21)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
适用
fig = plt.figure(figsize=(12,10)) Z = np.array([[9,8,7,6],[12,15,13,10],[0,7,3,2]]) # Z必须是二维的 # 最简单的 ax1 = fig.add_subplot(221) ax1.grid(True,which="both") cs1 = ax1.contour(Z) # Z[0,1]对应于坐标(0,1) ax1.clabel(cs1,inline=0,fontsize=8,colors="red") ax1.set_xlim(-0.5,3.5) ax1.set_ylim(0,3.0) ax1.set_title("contour(Z)") # 提供X/Y ax2 = fig.add_subplot(222) ax2.grid(True,which="both") X,Y=np.mgrid[2:5,1:5] cs2 = ax2.contour(X,Y,Z) # 对应位置的横坐标由X提供,纵坐标由Y提供,值由Z提供 ax2.clabel(cs2,inline=0,fontsize=8,colors="red") ax2.set_xlim(1.5,4.5) ax2.set_ylim(0,4.5) ax2.set_title("contour(X,Y,Z)") # 指定N ax3 = fig.add_subplot(223) ax3.grid(True,which="both") cs3 = ax3.contour(Z,2) # Z[0,1]对应于坐标(0,1) ax3.clabel(cs3,inline=0,fontsize=8,colors="red") ax3.set_xlim(-0.5,3.5) ax3.set_ylim(0,3.0) ax3.set_title("contour(Z,N)") # 指定了 等高线的值序列 ax4 = fig.add_subplot(224) ax4.grid(True,which="both") cs4 = ax4.contour(Z,[6,7,8,9,10,11]) # Z[0,1]对应于坐标(0,1) ax4.clabel(cs4,inline=0,fontsize=8,colors="red") ax4.set_xlim(-0.5,3.5) ax4.set_ylim(0,3.0) ax4.set_title("contour(Z,V)")
(22)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]
(23)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`的缩写。
x = np.linspace(0,6,num=20) y = np.sin(x) xerr = 0.1 yerr = 0.2 fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.errorbar(x,y,yerr,xerr,fmt='',ecolor='red',capsize=2,marker='o')
(24)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
的行数。
position = np.arange(0,100).reshape((2,-1)) colors = np.array(['r','g']) lineoffsets = np.array([0,2]) linelengths = np.array([1,2]) fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.eventplot(position,colors=colors,lineoffsets=lineoffsets,linelengths=linelengths) ax2 = fig.add_subplot(1,2,2) ax2.eventplot([0,1,2,3,4,5],colors='g',lineoffsets=1,linelengths=2,orientation='vertical')
(25)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
:颜色
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,2,num=20) y = np.sin(x) fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.fill(x,y,edgecolor='r') ax2 = fig.add_subplot(1,2,2) ax2.fill(x,y,closed=False,fill=False,edgecolor='g',label='testfill')
(26)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
,设定填充区域的边界的形状。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,4,num=20) y1 = np.sin(x) y2 = x ** 2 fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.fill_between(x,y1,y2,edgecolor='r',step=None) ax2 = fig.add_subplot(1,2,2) ax2.fill_between(x,y1,y2,edgecolor='g',where=x>2,step="post") ax2.set_xlim(0,4)
(27)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
轴填充
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,4,num=20) y1 = np.sin(x) y2 = x fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.fill_between(x,y1,y2,edgecolor='r',step=None) ax1.axhline(y=0,color='black') ax2 = fig.add_subplot(1,2,2) ax2.fill_betweenx(x,y1,y2,edgecolor='g') ax2.set_xlim(0,4)
(28)findobj(match=None, include_self=True)
功能:筛选出合适的artist
对象,返回一个列表。他会递归的向下搜寻
-
match
指定过滤器。- 如果为
None
,则它选出axes
包含的所有artist
- 如果为一个函数,则函数接受一个
artist
参数,返回布尔值。所有返回True
的artist
被选中 - 如果是一个类,则返回属于该类的
artist
- 如果为
-
include_self
:如果为True
,则也检查自己
(29)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...
(30)grid(b=None, which='major', axis='both', **kwargs)
功能:开启关闭网格。
b
为布尔值,指定你想开启(True
)还是关闭网格which
:可以为'major'/'minor'/'both'
,指定你想开启哪个级别的网格axis
:可以为'x'/'y'/'both'
,指定你想在那个轴上开启网格- 其他的关键字参数设定了网格的线条类型。如
color/linestype/linewidth
还有一种简单用法,就是axes.grid()
,此时表示:如果网格开启,则关闭。如果网格关闭,则开启。
(31)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)
。 -
剩下的参数设定颜色和面元的属性。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.array([1,2,3,4,5,6,7,8,8,9,9,9]) y = x C = [1,1,2,2,3,3,4,4,5,5,6,6] fig = plt.figure(figsize=(8,6)) ax1 = fig.add_subplot(2,2,1) ax1.hexbin(x,y) ax1.set_xlim(-1,10) ax1.set_ylim(-1,10) ax1.set_title("simple") ax2 = fig.add_subplot(2,2,2) ax2.hexbin(x,y,C,gridsize=10) ax2.set_xlim(-1,10) ax2.set_ylim(-1,10) ax2.set_title("C & gridsize") ax3 = fig.add_subplot(2,2,3) ax3.hexbin(x,y,C,gridsize=10,mincnt=1) ax3.set_xlim(-1,10) ax3.set_ylim(-1,10) ax3.set_title("mincent") ax4 = fig.add_subplot(2,2,4) ax4.hexbin(x,y,C,gridsize=10,marginals=True) ax4.set_xlim(-1,10) ax4.set_ylim(-1,10) ax4.set_title("marginals")
(32)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
的属性
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.random.randn(1000) fig = plt.figure(figsize=(8,6)) ax1 = fig.add_subplot(2,2,1) ax1.hist(x,bins=20) ax1.set_title("default") ax2 = fig.add_subplot(2,2,2) ax2.hist(x,bins=20,normed=True) ax2.set_title("normed") ax3 = fig.add_subplot(2,2,3) ax3.hist(x,bins=20,normed=True,histtype="step") ax3.set_title("histtype") ax4 = fig.add_subplot(2,2,4) ax4.hist(x,bins=20,normed=True,rwidth=0.6,label="aaa",color="r") ax4.set_title("rwidth&color") plt.show()
(33)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()
属性
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np data = np.random.randn(2,1000) fig = plt.figure() ax = fig.add_subplot(1,1,1) result = ax.hist2d(data[0,:],data[1,:],normed=True,bins=[20,40])
(34)hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', **kwargs)
功能:从xmin
到xmax
绘制一系列的水平线。这些水平线的纵坐标由y
提供。
参数:
y
:水平线的纵坐标。如果为标量,则为一条水平;如果为序列,则为一系列水平线。数据坐标系xmin/xmax
:水平线的起点和终点的横坐标。如果是个标量,则所有的水平线公用。如果是序列,则每个水平线设置一个。数据坐标系linestyles
:指定线型。可以为一个字符串(所有水平线公用),或者字符串序列(每个水平线一个)。线型在'solid' | 'dashed' | 'dashdot' | 'dotted'
四者之一colors
:指定颜色。可以为一个颜色(所有水平线公用),或者颜色序列(每个水平线一个)。label
:一个字符串,指定标签。- 其他关键字参数设置
LineCollection
属性。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np y = [1,2,3,3] fig = plt.figure() ax = fig.add_subplot() r = ax.hlines(y,xmin=0,xmax=[2,2,-1,3],colors=['r','g','y','b']) ax.set_xlim(-1,4) ax.set_ylim(0,4) print(r)
(35)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
属性
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np data = plt.imread("IU.jpg") print(data.shape) # (660, 500, 3) fig = plt.figure(figsize=(8,6)) ax1 = fig.add_subplot(221) ax1.imshow(data) ax1.set_title("default") ax2 = fig.add_subplot(222) ax2.imshow(data[:300,:300,:],aspect="equal") ax2.set_title("partial") ax3 = fig.add_subplot(223) ax3.imshow(data,origin="lower") ax3.set_title("origin=lower") ax4 = fig.add_subplot(224) ax4.imshow(data,origin="upper") ax4.set_title("origin=upper")
(36)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
:图例的标题
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10) y1 = np.sin(x) y2 = x ** 0.2 fig = plt.figure(figsize=(8,6)) ax1 = fig.add_subplot(221) ax1.plot(x,y1,label=r"sin(x)") ax1.scatter(x,y2,label=r"$x^2$") ax1.legend() ax1.set_title("default") ax2 = fig.add_subplot(222) line1 = ax2.plot(x,y1)[0] line1.set_label(r"sin(x)") line2 = ax2.scatter(x,y2) line2.set_label(r"$x^2$") ax2.legend(loc="upper left",fancybox=True,fontsize=18,framealpha=0.2) ax2.set_title("loc+fancybox+fontsize+framealpha") ax3 = fig.add_subplot(223) line3 = ax3.plot(x,y1)[0] line4 = ax3.scatter(x,y2) ax3.legend((line3,line4),(r"sin(x)",r"$x^2$"),loc="upper right",ncol=2,shadow=True) ax3.set_title("ncol+shadow") ax4 = fig.add_subplot(224) ax4.plot(x,y1,label=r"sin(x)") ax4.scatter(x,y2,label=r"$x^2$") ax4.legend(frameon=False) ax4.set_title("frameon")
(37)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)
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10) y = np.sin(x) fig = plt.figure() ax1 = fig.add_subplot(121) ax1.plot(x,y) ax1.set_title("default") ax2 = fig.add_subplot(122) ax2.plot(x,y) ax2.locator_params(axis="x",tight=True,nbins=12) ax2.set_title("locator_params") plt.tight_layout() plt.show()
(38)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
的属性
(39)margins(*args, **kw)
功能:设置Axes
的margin
。你可以通过ax.margins()
获取当前的margin
。 你也可以通过ax.margins(x=xmargin,y=ymargin)
来设置margin
。这两个参数的值是0~1
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10) y = np.sin(x) fig = plt.figure() ax1 = fig.add_subplot(121) ax1.plot(x,y) ax1.set_title("default") ax2 = fig.add_subplot(122) ax2.plot(x,y) ax2.margins(x=0.5,y=0.5) ax2.set_title("margins") plt.tight_layout() plt.show()
(40)matshow(Z, **kwargs)
功能:将一个矩阵绘制成图片。
参数:
Z
:一个形状为(n,m)
的数组- 其他参数见
imshow
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np Z1= np.random.randn(100,100) Z2 = np.arange(0,10000).reshape((100,100)) fig = plt.figure() ax1 = fig.add_subplot(121) ax1.matshow(Z1) ax2 = fig.add_subplot(122) ax2.matshow(Z2,origin="lower")
(41)minorticks_off()
:关闭次刻度线。minorticks_on()
:打开次刻度线。
(42)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
属性
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np Z = np.arange(0,10000).reshape((100,100)) fig = plt.figure() ax1 = fig.add_subplot(121) ax1.pcolor(Z) ax2 = fig.add_subplot(122) X2,Y2 = np.mgrid[0:100:1,100:0:-1] ax2.pcolor(X2,Y2,Z)
(43)pcolorfast(*args, **kwargs)
用法和pcolor
相同,它是一个实验性质的,提供了一个更快的实现。
(44)pcolormesh(*args, **kwargs)
作用和pcolor
相同。但是它是另一个实现方式,并且返回不同的对象,它返回的是QuadMesh
对象。它的速度更快。其参数和用法与pcolor
相同。
edgecolors
:除了pcolor
的edgecolors
之外,还多了一个'face'
,表示使用与四边形背景色相同的颜色。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np Z = np.arange(0,25).reshape((5,5)) fig = plt.figure() ax1 = fig.add_subplot(121) print(ax1.pcolor(Z,edgecolors="black")) ax2 = fig.add_subplot(122) print(ax2.pcolor(Z,edgecolors="face"))
(45)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, 此时的饼状图是个圆形(否则为椭圆)。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np X = np.linspace(1,10,num=5) x = [0.1,0.2,0.2,0.4,0.1] fig = plt.figure(figsize=(10,6)) ax1 = fig.add_subplot(321) ax1.pie(X) ax1.set_title("default") ax2 = fig.add_subplot(322) ax2.pie(X,explode=[0,0,0.1,0.1,0.2]) ax2.set_title("explode") ax3 = fig.add_subplot(323) ax3.pie(x,labels=['a','b','c','d','e']) ax3.set_title("labels+aspect=1") ax3.set_aspect(1) ax4 = fig.add_subplot(324) ax4.pie(x,autopct="num:%.2f%%") ax4.set_title("autopct") ax5 = fig.add_subplot(325) ax5.pie(x,labels=['a','b','c','d','e'],autopct="num:%.2f%%",pctdistance=1,labeldistance=0.5,shadow=True) ax5.set_title("pctdistance+labeldistance") plt.tight_layout() plt.show()
(46)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
的属性。
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np X = np.linspace(1,10,num=10) Y= X markers = ['-','--','-.',':','.',',','o','v','^','<','>','1','2','3','4','s','p','*','h','H','+','x','D','d','|','_'] colors =[ 'b','g','r','c','m','y','k','w'] fig = plt.figure(figsize=(10,8)) ax1 = fig.add_subplot(2,1,1) for i,marker in enumerate(markers): ax1.plot(X,np.ones_like(X)+i,marker+'b',label="marker:%s"%marker) ax1.legend(loc="best",ncol=4,framealpha=0.3) ax1.set_ylim(-1,100) ax2 = fig.add_subplot(2,1,2) for i,color in enumerate(colors): ax2.plot(X,np.ones_like(X)+i,'-'+color,label="color:%s"%color) ax2.legend(loc="best",ncol=2,framealpha=0.3) ax2.set_ylim(-1,9)
(47)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
(48)properties()
功能:返回一个字典,该字典中包含了axes
中的所有属性的键值对。
(49)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
的属性
举例:
X,Y = np.mgrid[10:12,18:20:1] U = np.arange(4,8).reshape(2,2) V = U fig = plt.figure() ax1 = fig.add_subplot(2,1,1) ax1.quiver(X,Y,U,V,label="default",color="red") ax1.quiver(X,Y,U,V,angles="xy",label="xy") ax1.grid() ax1.set_xlim(9.5,11.5) ax1.set_ylim(17.5,19.5) ax1.set_title("default") ax1.legend(loc="best") ax2 = fig.add_subplot(2,1,2) ax2.quiver(X,Y,U,V,label="scale",color="red",scale=40,scale_units='x') ax2.quiver(X,Y,U,V,units='dots',width=4,angles="xy",headaxislength=5, headwidth=8,headlength=10,scale=40,scale_units="width", label="set_width_length") ax2.quiver(X,Y,U,V,label="pivot_tip",color="green",scale=40,scale_units='x',pivot='tip') ax2.quiver(X,Y,U,V,label="pivot_mid",color="blue",scale=40,scale_units='x',pivot='mid') ax2.grid() ax2.set_xlim(9.5,11.5) ax2.set_ylim(17.5,19.5) ax2.set_title("width&length&pivot") ax2.legend(loc="best")
(50) 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
的一些属性。
举例:
X,Y = np.mgrid[10:12,18:20:1] U = np.arange(4,8).reshape(2,2) V = U fig = plt.figure() ax = fig.add_subplot(1,1,1) quiver = ax.quiver(X,Y,U,V,label="default",color="red") ax.quiverkey(quiver,11,19,2,r'$2m/s$',coordinates='data',labelpos="W",\ fontproperties={'weight':'bold','size':20}) ax.grid() ax.set_xlim(9.5,11.5) ax.set_ylim(17.5,19.5) ax.set_title("default") ax.legend(loc="best")
(51) remove()
功能:从figure
中移除本axes
。除非重绘figure
,否则看不出来效果。
(52)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
参数
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np X = np.linspace(1,10,num=20) fig = plt.figure(figsize=(10,8)) ax1 = fig.add_subplot(2,1,1) ax1.scatter(X,np.ones_like(X),label='default') ax1.scatter(X,np.ones_like(X)+1,c='red',label='colored') ax1.scatter(X,np.ones_like(X)+2,marker=(5,2,30),label='marked') ax1.scatter(X,np.ones_like(X)+3,marker='s',s=50,label='sized') ax1.scatter(X,np.ones_like(X)+4,marker='s',edgecolors='g',label='edgecolors') ax1.legend(loc='best')
(53)semilogx(*args, **kwargs)
功能:它类似plot()
,只是将x
轴设置为对数坐标。除了多了下面的参数外,其他设置与plot()
一样。
参数:
basex
:一个大于 1 的标量,用于设置对数的底数subx
:一个序列或者None
。用于设置x
轴的主要刻度值。默认采用自动设定nonposx
:如果为'mask'
,则x
的负数或者零将被视作无效的数;如果为'clip'
,则x
的负数或者零将被视作一个非常小的正数(因为对数的自变量要大于零)
(54)semilogy(*args, **kwargs)
功能:它类似plot()
,只是将y
轴设置为对数坐标。除了多了下面的参数外,其他设置与plot()
一样。
参数:
basey
:一个大于 1 的标量,用于设置对数的底数suby
:一个序列或者None
。用于设置y
轴的主要刻度值。默认采用自动设定nonposy
:如果为'mask'
,则y
的负数或者零将被视作无效的数;如果为'clip'
,则y
的负数或者零将被视作一个非常小的正数(因为对数的自变量要大于零)
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np X = np.linspace(10,100) Y = X fig = plt.figure(figsize=(12,6)) ax1 = fig.add_subplot(2,2,1) ax1.semilogx(X,Y,basex=2) ax1.set_title("semilogx:basex=2") ax2 = fig.add_subplot(2,2,2) ax2.semilogx(X,Y,basex=2) ax2.set_title("semilogx:basey=2") ax3 = fig.add_subplot(2,2,3) ax3.loglog(X,Y,basex=10,basey=10) ax3.set_title("loglog:basex=10,basey=10") plt.tight_layout() plt.show()
(55)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
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np Z = [[3,3,5,7],[-1,0,2,2],[4,100,2,0]] fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.spy(Z) ax1.set_title("default") ax2 = fig.add_subplot(1,2,2) ax2.spy(Z,precision=1,marker='^') ax2.set_title("marker&precision") plt.tight_layout()
(56)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`这条基准直线的格式。
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(1,10) y = np.sin(x) fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.stem(y,linefmt='b-.',markerfmt='ys',basefmt='r-') ax1.set_title("y") ax2 = fig.add_subplot(1,2,2) ax2.stem(x,y,linefmt='b-',markerfmt='bo',basefmt='r-') ax2.set_title("x&y")
(57)step(x, y, *args, **kwargs)
功能:绘制阶梯图。调用方式为step(x, y, *args, **kwargs)
参数:
- x/y:都是一维序列,并且假设x为单调递增的(如果不满足,也不报错)
- where:指定分步类型。可以为'pre'/'post'/'mid'
- 其他参数与plot()相同
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(1,10,num=10) y = x ** 2 fig = plt.figure() ax1 = fig.add_subplot(1,3,1) ax1.step(x,y,'r',where='pre') ax1.set_title("pre") ax2 = fig.add_subplot(1,3,2) ax2.step(x,y,'g',where='post') ax2.set_title("post") ax3 = fig.add_subplot(1,3,3) ax3.step(x,y,'b',where='mid') ax3.set_title("mid") plt.tight_layout() plt.show()
(58) 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流线起点的个数,给出了流线起始点的位置
举例:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(1,5,num=10) y = np.linspace(1,5,num=10) u,_ = np.meshgrid(x,y) v = u ** 2 fig = plt.figure() ax1 = fig.add_subplot(1,2,1) ax1.streamplot(x,y,u,v) ax1.quiver(x,y,u,v) ax1.set_title("default") ax2 = fig.add_subplot(1,2,2) ax2.streamplot(x,y,u,v,density=0.5,arrowsize=2,arrowstyle='->') ax2.quiver(x,y,u,v,label='quiver',width=4,units="dots",scale=0.5,scale_units="dots") ax2.set_title("styled")
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)
(60)text(x, y, s, fontdict=None, withdash=False, **kwargs)
功能:添加文本,返回一个Text实例。
参数:
- s:一个字符串,被添加的文本
- x/y:一个标量,文本被添加的坐标
- fontdict:一个字典,给出了字体属性。
- withdash:一个布尔值。如果为True,则创建一个TextWithDash实例而不是Text实例。
- 其他参数用于控制Text属性
(61)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
(62)vlines(x, ymin, ymax, colors='k', linestyles='solid', label='', **kwargs)
功能:绘制一群垂直线。
参数:
- x:标量或者一维数组,给出了垂线的位置
- ymin/ymax:给出了垂线的起始和终止位置。如果是个标量,则所有垂线共享该值
- colors:给出垂线的颜色
- linestyles:给出了垂线的线型
- label:一个字符串
- 其他关键字参数设置LineCollection参数
(63)xcorr(x, y, normed=True, detrend=<function detrend_none>, usevlines=True,maxlags=10, **kwargs)
功能:绘制互相关图。参数解释参考acorr()自相关函数。
3. Axis类
(1)matplotlib.axis.Axis
实例处理tick line
、grid line
、tick label
以及axis label
的绘制,它包括坐标轴上的刻度线、刻度label
、坐标网格、坐标轴标题。通常你可以独立的配置y
轴的左边刻度以及右边的刻度,也可以独立地配置x
轴的上边刻度以及下边的刻度。
- 刻度包括主刻度和次刻度,它们都是
Tick
刻度对象。
(2)Axis
也存储了数据用于内部的缩放以及自适应处理。它还有Locator
实例和Formatter
实例用于控制刻度线的位置以及刻度label
。
(3)每个Axis
都有一个.label
属性,也有主刻度列表和次刻度列表。这些tick
是XTick
和YTick
的实例,他们存放着实际的line primitive
以及text primitive
来渲染刻度线以及刻度文本。
(4)刻度是动态创建的,只有在需要创建的时候才创建(比如缩放的时候)。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
举例:
%matplotlib inline import matplotlib.pyplot as plt import matplotlib fig = plt.figure() rect = fig.patch # fig的Rectangle rect.set_facecolor('lightgoldenrodyellow') ax = fig.add_subplot(111) # 创建 Axes rect = ax.patch # ax的Rectangle rect.set_facecolor("lightslategray") axis = ax.xaxis # 轴 axis.get_ticklocs() # tick location,array([0. , 0.2, 0.4, 0.6, 0.8, 1. ]) axis.get_ticklabels() # tick label,<a list of 6 Text major ticklabel objects> axis.get_ticklines() # tick line ,<a list of 12 Line2D ticklines objects> axis.get_scale() # 缩放类型,'linear' axis.get_gridlines() # grid,<a list of 6 Line2D gridline objects> for label in ax.xaxis.get_ticklabels(): label.set_color("red") label.set_rotation(45) label.set_fontsize(16) for line in ax.yaxis.get_ticklines(): line.set_color("green") line.set_markersize(15) line.set_markeredgewidth(5) plt.tight_layout() fig.show()
(5) Axis 方法
axis_date(tz=None)
:将x
轴视作时间轴cla()
:清除axis
get_xxx()
方法:参考前面叙述的内容set_xxx()
方法:对应的设置方法。
(6)获取刻度线或者刻度label
之后,可以设置其各种属性,如可以对刻度label
旋转 30度:
for line in axis.get_majorticklabels(): line.set_rotation(30)
4. Tick类
(1)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*对应上侧的轴。
举例:
%matplotlib inline import matplotlib.pyplot as plt import matplotlib import numpy as np fig = plt.figure() ax = fig.add_subplot(111) ax.plot(100*np.random.rand(20)) # 添加Line2D formatter = matplotlib.ticker.FormatStrFormatter("$%1.2f") ax.yaxis.set_major_formatter(formatter) # 设置major_formatter for tick in ax.yaxis.get_major_ticks(): tick.label10n = True tick.label20n = True tick.label1.set_color("red") tick.label2.set_color("green") fig.show()
(2)方法有:
get_loc()
:以标量的形式返回Tick
的坐标get_pad()
:返回Tick
的label
和刻度线之间的距离(单位为像素点)set_label(s)/set_label1(s)/set_label2(s)
:设置label
set_pad(val)
:设置Tick
的label
和刻度线之间的距离(单位为像素点)
三、primitive
1.Line2D类
matplotlib.lines.Line2D
类是matplotlib
中的曲线类(基类是matplotlib.artist.Artist
),它可以有各种各样的颜色、类型、以及标注等等。它的构造函数为:
Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth =None, markeredgecolor=None, markerfacecolor =None, markerfacecoloralt=’none’, fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs)
这些关键字参数都是Line2D
的属性。其属性有:
-
继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
-
.antialiased
或者.aa
属性:一个布尔值。如果为True
则表示线条是抗锯齿处理的 -
.color
或者.c
属性:一个matplotlib color
值,表示线条的颜色, -
.dash_capstyle
属性:为'butt' or 'round' or 'projecting'
,表示虚线头端类型 -
.dash_joinstyle
属性:为'miter' or 'round' or 'bevel'
,表示虚线连接处类型 -
.dashes
属性:一个数值序列,表示虚线的实部、虚部的尺寸。如果为(None,None)
则虚线成为实线 -
.drawstyle
属性:为'default'or'steps'or'step-pre'or'step-mid'or'step-post'
,表示曲线类型。'default'
:点之间以直线连接'steps*'
:绘制阶梯图。其中steps
等价于steps-pre
,是为了保持兼容旧代码
-
.fillstyle
属性:为'full'or'left'or'right'or'bottom'or'top'or'none'
表示marker
的填充类型。'full'
:填充整个marker
none
:不填充marker
- 其他值:表示填充一半
marker
-
.linestyle
或者ls
属性:指定线型,可以为以下值:'-'
或者'solid'
:表示实线'--'
或者dashed
:表示虚线'-.'
或者dash_dot
:表示点划线':'
或者'dotted'
:表示点线'None'
或者' '
或者''
:表示没有线条(不画线)
-
.linewidth
或者lw
属性:为浮点值,表示线条宽度 -
.marker
属性:可以为一系列的字符串,如'.'、','、'o'....
,表示线条的marker
-
.markeredgecolor
或者.mec
属性:可以为matplotlib color
,表示marker
的边的颜色 -
.markeredgewidth
或者.mew
属性:可以为浮点数,表示marker
边的宽度 -
.markerfacecolor
或者.mfc
属性:可以为matplotlib color
,表示marker
的前景色 -
.markerfacecoloralt
或者.mfcalt
属性:可以为matplotlib color
,表示marker
的可选前景色 -
.markersize
或者.ms
属性:可以为浮点数,表示marker
的大小 -
.markevery
属性:指定每隔多少个点绘制一个marker
,可以为以下值:None
:表示每个点都绘制marker
N
:表示每隔N
个点绘制marker
,从0开始(start,N)
:表示每隔N
个点绘制marker
,从start
开始[i,j,m,n]
:只有点i,j,m,n
的marker
绘制- ...其他值参考文档
-
.pickradius
属性:浮点值,表示pick radius
-
.solid_capstyle
属性:可以为'butt'、'round'、'projecting'
,表示实线的头端类型 -
.sold_joinstyle
属性:可以为'miter'、'round'、'bevel'
,表示实线连接处的类型 -
.xdata
属性:可以为一维的numpy.array
,表示x
轴数据 -
.ydata
属性:可以为一维的numpy.array
,表示y
轴数据
2.Text类
matplotlib.text.Text
类是绘制文字的类(基类是matplotlib.artist.Artist
)。它的构造函数为:
Text(x=0, y=0, text='', color=None, verticalalignment='baseline', horizontalalignment=’left’, multialignment=None, fontproperties =None, rotation=None, linespacing=None, rotation_ mode=None, usetex=None, wrap=False, **kwargs)
这些关键字参数也是属性。其属性有:
-
继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
-
.backgroundcolor
属性:背景色,可以为任何matplotlib color
-
.bbox
属性:文本框的边框。其值是FancyBboxPatch
类的属性字典。 -
.color
属性:字体颜色,可以为任何matplotlib color
-
.family
或者.name
或者.fontfamily
或者.fontname
属性:字体的名字。可以是string
或者string list
(表示可以为若干个名字,优先级依次递减)。string
必须是一个真实字体的名字,或者一个字体的class name
。 -
.fontproperties
或者.font_properties
属性:字体的属性,值是一个matplotlib.font_manager.FontProperties
实例(该实例一次性设置字体的很多属性,比如字体类型、字体名字、字体大小、宽度、...) -
.horizontalalignment
或者.ha
属性:水平对齐方式,可以为'center'、'right'、'left'
-
.linespacing
属性:为浮点数,单位为font size
,表示行间距 -
.multialignment
属性:multiline text
对齐方式,可以为'left'、'right'、'center'
-
.position
属性:为一个元组(x,y)
,表示文本框的位置 -
.rotation
属性:字体旋转角度。可以为下列值:- 浮点数,表示角度
'vertical'、'horizontal'
-
.rotation_mode
属性:旋转模式。可以为下列值:'anchor'
:文本首先对齐,然后根据对齐点来旋转None
:文本先旋转,再对齐
-
.size
或者.fontsize
属性:字体大小。可以为下列值:- 浮点值,表示字体大小
'xx-small'、'x-small'、'small'、'medium'、'large'、'x-large'、'xx-large'
-
.stretch
或者.fontstretch
属性:字体沿水平方向的拉伸。可以为下列值:- 整数,在[0---1000]之间
'ultra-condensed'
、'extra-condensed'
、'condensed'
、'semi-condensed'
、'normal'
、'semi-expanded'
、'expanded'
、'extra-expanded'
、'ultra-expanded'
-
.style
或者.fontstyle
属性:字体样式,可以为'normal'、'italic'、'oblique'
-
.text
属性:文本字符串,可以为任意字符串(他可以包含'\n'
换行符或者LATEX
语法) -
.variant
或者.fontvariant
属性:表示字体形变,可以为下列值:'normal'、'small-caps'
-
.verticalalignment
或者.ma
或者.va
属性:表示文本的垂直对齐,可以为下列值:'center'、'top'、'bottom'、'baseline'
-
.weight
或者.fontweight
属性:设置字体的weight
,可以为下列值:- 一个整数值,在[0---1000]之间
'ultralight'
、'light'
、'normal'
、'regular'
、'book
'、'medium'
、'roman'
、'semibold'
、'demibold'
、'demi'
、'bold'
、'heavy'
、'extrabold'
、'black'
-
.x
属性:一个浮点值,表示文本框位置的x
值 -
.y
属性:一个浮点值,表示文本框位置的y
值
3.Annotation类
matplotlib.text.Annotation
类是图表中的图式,它是一个带箭头的文本框,用于解说图表中的图形。它的基类是matplotlib.text.Text
和matplotlib.text._AnnotationBase
。其构造函数为:
Annotation(s, xy, xytext=None, xycoords=’data’, textcoords=None, arrowprops =None, annotation_clip=None, **kwargs)
在位置xytext
处放置一个文本框,该文本框用于解释点xy
,文本框的文本为s
。
-
s
:文本框的文本字符串 -
xy
:被解释的点的坐标 -
xytext
:文本框放置的位置。如果为None
,则默认取xy
-
xycoords
:xy
坐标系,默认取'data'
坐标系(即xy
是数据坐标系中的点)。可以为以下值:'figure points'
:从figure
左下角开始的点'figure pixesl'
:从figure
左下角开始的像素值'figure fraction'
:(0,0)
代表figure
的左下角,(1,1)
代表figure
的右上角'axes points'
:从axes
左下角开始的点'axes pixels'
:从axes
左下角开始的像素'axes fraction'
:(0,0)
代表axes
的左下角,(1,1)
代表axes
的右上角'data'
:使用被标注对象的坐标系'offset points'
:指定从xy
的偏移点'polar'
:极坐标系
-
textcoords
:文本框坐标系(即xytext
是文本坐标系中的点),默认等于xycoords
-
arrowprops
:指定文本框和被解释的点之间的箭头。如果不是None
,则是一个字典,该字典设定了matplotlib.lines.Line2D
的属性。- 如果该字典有一个
arrowstyle
属性,则该键对应的值也是一个字典,创建一个FancyArrowsPatch
实例,实例属性由该字典指定。 - 如果该字典没有
arrowstyle
属性,则创建一个YAArrow
实例,
- 如果该字典有一个
-
annotation_clip
:控制超出axes
区域的annotation
的显示。如果为True
则annotation
只显示位于axes
区域内的内容。 -
额外的关键字参数全部是设置
Text
的属性
4.Legend
matplotlib.legend.Legend
是图例类,它的基类是matplotlib.artist.Artist
。其构造函数为:
Legend(parent, handles, labels, loc=None, numpoints=None, markerscale =None, markerfirst=True, scatterpoints=None, scatteryoffsets=None, prop=None, fontsize=None, borderpad =None, labelspacing=None, handlelength=None, handleheight=None, handletextpad=None, borderaxespad =None, columnspacing=None, ncol=1, mode=None, fancybox=None, shadow=None, title=None, framealpha =None, bbox_to_anchor=None, bbox_transform=None, frameon=None, handler_map=None)
其关键字参数为:
-
parent
:持有该legend
的artist
-
loc
:图例的位置。其值可以为字符串或者数字:best
或0:自动计算upper right
或1: 右上角upper left
或2:上角lower left
或3:下角lower right
或4:右下角right
或5:右边center left
或6:中间偏左center right
或7:中间偏右lower center
或8:中间底部upper center
或9:中间顶部center
或10:正中央
-
handle
:一个artist
列表,添加这些artist
到legend
中 -
lebels
:一个字符串列表添加到legend
中 -
prop:
字体属性 -
fontsize
: 字体大小(只有prop
未设置时有效) -
markerscale
:marker
的缩放比例(相对于原始大小) -
markerfirst
: 如果为True
,则marker
放在label
左侧;否则marker
放在label
右侧 -
numpoints
: the number of points in the legend for line为线条图图例条目创建的标记点数 -
scatterpoints
: the number of points in the legend for scatter plot为散点图图例条目创建的标记点数 -
scatteryoffsets
: a list of offsets for scatter symbols in legend为散点图图例条目创建的标记的垂直偏移量 -
frameon
: if True, draw a frame around the legend. If None, use rc控制是否应在图例周围绘制框架 -
fancybox
: if True, draw a frame with a round fancybox. If None, use rc控制是否应在构成图例北京的FancyBboxPatch周围启用圆边 -
shadow
: if True, draw a shadow behind legend控制是否在图例后面画一个阴影 -
framealpha
: If not None, alpha channel for the frame.控制图例框架的Alpha透明度 -
ncol
: number of columns设置图例分为n列展示 -
borderpad
: the fractional whitespace inside the legend border图例边框的内边距 -
labelspacing
: the vertical space between the legend entries图例条目之间的垂直间距 -
handlelength
: the length of the legend handles图例句柄的长度 -
handleheight
: the height of the legend handles图例句柄的高度 -
handletextpad
: the pad between the legend handle and text图例句柄和文本之间的间距 -
borderaxespad
: the pad between the axes and legend border轴域图例边框之间的距离 -
columnspacing
:the spacing between columns列间距 -
title
: 图例的标题 -
bbox_to_anchor
: the bbox that the legend will be anchored.指定图例在轴的位置 -
bbox_transform
: the transform for the bbox. transAxes if Noneloc a location code -
其他关键字参数用于设置属性
属性为:
- 继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
5.Patch类
matplotlib.patches.Patch
类是二维图形类。它的基类是matplotlib.artist.Artist
。其构造函数为:
Patch(edgecolor=None, facecolor=None, color=None, linewidth=None, linestyle=None, antialiased=None, hatch=None, fill=True, capstyle=None, joinstyle=None, **kwargs)
参数为:
-
edgecolor
:可以为matplotlib color
,表示边线条的颜色,若为none
则表示无颜色 -
facecolor
:可以为matplotlib color
,表示前景色,若为none
则表示无颜色 -
color
可以为matplotlib color
,表示边线条和前景色的颜色。 -
linewidth
:为浮点数,表示线条宽度 -
linestyle
:指定线型,可以为以下值:'-'
或者'solid'
:表示实线'--'
或者dashed
:表示虚线'-.'
或者dash_dot
:表示点划线':'
或者'dotted'
:表示点线'None'
或者' '
或者''
:表示没有线条(不画线)
-
antialiased
:一个布尔值。如果为True
则表示线条是抗锯齿处理的 -
hatch
:设置hatching pattern
,可以为下列的值:'\'
、'|'
、'-'
、'+'
、'x'
、'o'
、'0'
、'.'
、'*'
-
fill
:为布尔值。如果为True
则填充图形,否则不填充 -
capstyle
:为'butt' or 'round' or 'projecting'
,表示线条头端类型 -
joinstyle
:可以为'miter'、'round'、'bevel'
,表示矩形线条接头类型 -
其他关键字参数用于设置属性
如果
edgecolor, facecolor, linewidth, or antialiased
为None
则这些值从rc params
中读取
属性如下:
-
继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、path_effects
、.picker
、.transform
、.url
、.visible
、.zorder
-
.antialiased
或者.aa
属性:一个布尔值。如果为True
则表示线条是抗锯齿处理的 -
.capstyle
属性:为'butt' or 'round' or 'projecting'
,表示线条头端类型 -
.color
属性:可以为matplotlib color
,表示边线条和前景色的颜色。 -
.edgecolor
或者.ec
属性:可以为matplotlib color
,表示边线条的颜色,若为none
则表示无颜色 -
.facecolor
或者.fc
属性:可以为matplotlib color
,表示前景色,若为none
则表示无颜色 -
.fill
属性:为布尔值。如果为True
则填充图形,否则不填充 -
.hatch
属性:设置hatching pattern
,可以为下列的值:'\'
、'|'
、'-'
、'+'
、'x'
、'o'
、'0'
、'.'
、'*'
-
.joinstyle
属性:可以为'miter'、'round'、'bevel'
,表示矩形线条接头类型 -
.linestyle
或者.ls
属性:指定线型,可以为以下值:'-'
或者'solid'
:表示实线'--'
或者dashed
:表示虚线'-.'
或者dash_dot
:表示点划线':'
或者'dotted'
:表示点线'None'
或者' '
或者''
:表示没有线条(不画线)
-
.linewidth
或者.lw
属性:为浮点数,表示线条宽度
6.Rectangle类
matplotlib.patches.Rectangle
类是矩形类(基类是matplotlib.patches.Patch
),其构造函数为:Rectangle(xy,width,height,angle=0.0,**kwargs)
。
参数为:
xy
:矩形左下角坐标width
:矩形宽度height
:矩形高度- 其他关键字参数用于设置属性
其属性有:
- 继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
- 继承自
Patch
基类的属性:.antialiased
或者.aa
、.capstyle
、.color
、.edgecolor
或者.ec
、.facecolor
或者.fc
、.fill
、.hatch
、.joinstyle
、.linestyle
或者.ls
、.linewidth
或者.lw
属性
7.Polygon类
matplotlib.patches.Polygon
类是多边形类。其基类是matplotlib.patches.Patch
。其构造函数为: Polygon(xy, closed=True, **kwargs)
。
参数为:
xy
是一个N×2
的numpy array
,为多边形的顶点。closed
为True
则指定多边形将起点和终点重合从而显式关闭多边形。- 其他关键字参数用于设置属性
Polygon
的属性有:
- 继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
- 继承自
Patch
基类的属性:.antialiased
或者.aa
、.capstyle
、.color
、.edgecolor
或者.ec
、.facecolor
或者.fc
、.fill
、.hatch
、.joinstyle
、.linestyle
或者.ls
、.linewidth
或者.lw
属性
8.PolyCollection类
matplotlib.collections.PolyCollection
是多边形集合类,其基类是matplotlib.collections._CollectionWithSizes
。它的构造函数为:PolyCollection(verts, sizes=None, closed=True, **kwargs)
。
其关键字参数为:
verts
:一个顶点序列。每个顶点都由xy元组
或者xy数组
组成sizes
:一个浮点数序列,依次指定每个顶点正方形的边长。如果序列长度小于顶点长度,则循环从序列头部再开始 挑选closed
:如果为True
,则显式封闭多边形edgecolors
:collection
的边的颜色- 其他关键字参数用于设置属性
下面为属性:
- 继承自
Artist
基类的属性:.alpha
、.animated
、.axes
、.clip_box
、..clip_on
、.clip_path
、.contains
、.figure
、.gid
、.label
、.picker
、.transform
、.url
、.visible
、.zorder
.facecolors
:collection
的前景色.linewidths
:collection
的边线宽.antialiaseds
:抗锯齿属性,可以为True
或者False
.offsets
: 设置collection
的偏移.norm
: 归一化对象.cmap
:color map
参考文献: