container Artist
a. Figure
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
实例列表
1 Figure 的 Axes
当你执行 Figure.add_subplot()
或者 Figure.add_axes()
时,这些新建的 Axes
都被添加到 Figure.axes
列表中。
由于 Figure
维持了 current axes
,因此你不应该手动的从 Figure.axes
列表中添加删除元素,而是要通过 Figure.add_subplot()
、 Figure.add_axes()
来添加元素,通过 Figure.delaxes()
来删除元素。但是你可以迭代或者访问 Figure.axes
中的 Axes
,然后修改这个 Axes
的属性。
可以通过 Figure.gca()
获取 current axes
,通过 Figure.sca()
设置 current axes
。
2 Figure 的 primitive
Figure
也有它自己的 text
、 line
、 patch
、 image
。你可以直接通过 add primitive
语句直接添加。但是注意 Figure
默认的坐标系是以像素为单位,你可能需要转换成 figure
坐标系:(0,0) 表示左下点,(1,1) 表示右上点。
b. 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
的坐标。
1 .patch 属性
Axes
包含了一个 .patch
属性,对于卡迪尔坐标系而言,它是一个 Rectangle
;对于极坐标而言,它是一个 Circle
。这个 .patch
属性决定了 plotting region
的形状、背景和边框。
2 常用绘图方法
当调用 Axes.plot()
方法时,该方法会创建一个 matplotlib.lines.Line2D
实例,然后会利用传给 .plot()
的关键字参数来更新该 Line2D
的属性,然后将这个 Line2D
添加到 Axes.lines
列表中。该方法返回的刚创建的 Line2D
列表,因为你可以传递多个 (x,y)
值从而创建多个 Line2D
。
当调用 Axes.hist()
方法时,类似于 .plot()
方法,不过它会添加 patches
到 Axes.patches
列表。
你不应该直接通过 Axes.lines
和 Axes.patches
列表来添加图表。因为当你通过 .plot()
和 .hist()
等方法添加图表时, matplotlib
会做许多工作而不仅仅是添加绘图组件到 Axes.lines
或者 Axes.patches
列表中。
但是你可以使用 Axes
的辅助方法 .add_line()
和 .add_patch()
方法来添加。
3 常用 Axes 方法
下面是 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
列表中。
4 Axes 的坐标轴
另外 Axes
还包含两个最重要的 Artist container
:
ax.xaxis
:XAxis
对象的实例,用于处理x
轴tick
以及label
的绘制ax.yaxis
:YAxis
对象的实例,用于处理y
轴tick
以及label
的绘制
Axes
包含了许多辅助方法来访问和修改 XAxis
和 YAxis
,这些辅助方法其实内部调用的是 XAxis
和 YAxis
的方法。因此通常情况下你不需要直接调用 XAxis
和 YAxis
的方法。
c. Axis 类
matplotlib.axis.Axis
实例处理 tick line
、 grid line
、 tick label
以及 axis label
的绘制。通常你可以独立的配置 y
轴的左边 tick
以及右边的 tick
,也可以独立地配置 x
轴的上边 tick
以及下边的 tick
。
Axis
也存储了数据用于内部的缩放以及自适应处理。它还有 Locator
实例和 Formatter
实例用于控制 tick
摆放的位置以及 tick
的标注字符串。
每个 Axis
都有一个 .label
属性,也有 major tick
列表和 minor tick
列表。这些 tick
是 XTick
和 YTick
的实例,他们存放着实际的 line primitive
以及 text primitive
来渲染 tick
以及 ticklabel
。
tick
是动态创建的,只有在需要创建的时候才创建(比如缩放的时候)。 Axis
也提供了一些辅助方法来获取 tick label
、 tick location
等等:
Axis.get_major_ticks()
:获取major tick
列表(一个Tick
对象的列表)Axis.get_minor_ticks()
:获取minor tick
列表(一个Tick
对象的列表)Axis.get_ticklocs()
:获取tick location
列表。 可以通过minor=True|False
关键字参数控制输出minor
还是major
的tick location
。Axis.get_ticklabels()
:获取tick label
列表(一个Text
实例的列表)。 可以通过minor=True|False
关键字参数控制输出minor
还是major
的tick label
。Axis.get_ticklines()
:获取tick line
列表(一个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_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()
:一个开关,用于控制major
或者minor
的tick
的on|off
d. Tick 类
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*
对应下侧的轴。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论