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
的坐标。
3. Axes
包含了一个.patch
属性,对于笛卡尔坐标系而言,它是一个Rectangle
;对于极坐标而言,它是一个Circle
。这个.patch
属性决定了plotting region
的形状、背景和边框。
4. 当调用Axes.plot()
方法时,该方法会创建一个matplotlib.lines.Line2D
实例,然后会利用传给.plot()
的关键字参数来更新该Line2D
的属性,然后将这个Line2D
添加到Axes.lines
列表中。该方法返回的刚创建的Line2D
列表,因为你可以传递多个(x,y)
值从而创建多个Line2D
。
当调用Axes.hist()
方法时,类似于.plot()
方法,不过它会添加patches
到Axes.patches
列表。
5. 你不应该直接通过Axes.lines
和Axes.patches
列表来添加图表。因为当你通过.plot()
和.hist()
等方法添加图表时,matplotlib
会做许多工作而不仅仅是添加绘图组件到Axes.lines
或者Axes.patches
列表中。
但是你可以使用Axes
的辅助方法.add_line()
和.add_patch()
方法来添加。
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
列表中。
7. 另外Axes
还包含两个最重要的Artist container
:
ax.xaxis
:XAxis
对象的实例,用于处理x
轴tick
以及label
的绘制ax.yaxis
:YAxis
对象的实例,用于处理y
轴tick
以及label
的绘制
Axes
包含了许多辅助方法来访问和修改XAxis
和YAxis
,这些辅助方法其实内部调用的是XAxis
和YAxis
的方法。因此通常情况下你不需要直接调用XAxis
和YAxis
的方法。
学员评价