对象容器
我们知道了如何检查和设置要配置的给定对象的属性,那首先要知道如何获取该对象。如简介中所述,有两种对象:基本体和容器。基本体通常是想要配置(Text(文本)实例的字体、Line2D的宽度)的东西,尽管容器也有一些这样的属性——例如,Axes这种Artist是一个包含绘图中许多基本体的容器,但它也有诸如xscale来控制如X轴(xaxis)是“线性”还是“对数”等属性。在本节中,阐述各种容器对象存储想要访问的艺术家(Artists)的位置。
Text:https://matplotlib.org/stable/api/text_api.html#matplotlib.text.TextLine2D:https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2DAxes:https://matplotlib.org/stable/api/axes_api.html#matplotlib.axes.AxesArtist:
https://matplotlib.org/stable/api/artist_api.html#matplotlib.artist.Artist
图表(Figure)容器
顶层Artist容器是matplotlib.figure.Figure,它包含了图表的所有内容。图表的背景是一个Rectangle(矩形),存储在Figure.patch中。当向Figure(图表)中添加subplots(子图表,Axes的子类,add_subplot())和Axes(图表域,add_axes())时,这些对象将添加到Figure.axes中。创建它们的方法也会返回这些对象:
matplotlib.figure.Figure:https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.FigureRectangle:https://matplotlib.org/stable/api/_as_gen/matplotlib.patches.Rectangle.html#matplotlib.patches.Rectangleadd_subplot():https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.add_subplotadd_axes():https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.add_axesFigure.axes:
https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.axes
·
·
·
·
·
·
ipython%matplotlib tkimport matplotlib.pyplot as pltfig = plt.figure()ax1 = fig.add_subplot(211)ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.3])
由于该Figure(图表)保持了“当前Axes(图表域)”的概念(参见Figure.gca和Figure.sca)以支持pylab/pyplot状态机制,因此不应直接从Axes(图表域)列表中插入或删除Axes,而应使用add_subplot()和add_Axes()方法进行插入,和使用Axes.remove方法删除。不过,可以自由地遍历Axes列表或对其进行索引,以访问想要自定义的Axes实例。下面是一个启用所有“Axes”栅格的示例:Figure.gca:https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.gcaFigure.sca:https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.scaAxes.remove:
https://matplotlib.org/stable/api/_as_gen/matplotlib.artist.Artist.remove.html#matplotlib.artist.Artist.remove
·
·
for ax in fig.axes: ax.grid(True)
Figure(图表)还具有自己的images(图像)、lines(线条)、patches(面片)和text(文本)属性,可以使用这些属性直接添加primitives(基本体)。这样做时,Figure的默认坐标系将仅以像素为单位(这通常不是想要的)。如果使用Figure级别的方法添加Artists(艺术家,例如,使用Figure.text添加文本),则默认坐标系将是“Figure坐标”,其中(0, 0)是Figure的左下角,(1, 1)是Figure右上角。Figure.text:
https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.text
与所有Artist(艺术家)一样,可以通过设置变换属性来控制此坐标系。通过将Artist的变换属性设置为fig.transFigure,就可以显式使用“Figure坐标”:
·
·
·
·
·
·
·
import matplotlib.pyplot as pltimport matplotlib.lines as linesfig = plt.figure()l1 = lines.Line2D([0, 1], [0, 1], transform=fig.transFigure, figure=fig)l2 = lines.Line2D([0, 1], [1, 0], transform=fig.transFigure, figure=fig)fig.lines.extend([l1, l2])plt.show()
Figure包含的Artists小结:
Figure attribute | Description |
axes | A list of Axes instances (includes Subplot) Axes(图表域)对象列表(包括Subplot(子图表)) |
patch | The Rectangle background Rectangle(矩形)背景 |
images | A list of FigureImage patches - useful for raw pixel display FigureImage(Figure图像)小块列表-用于原始像素显示 |
legends | A list of Figure Legend instances (different from Axes.get_legend()) Figure(图表)的Legend(图例)列表(不同于Axes.get_Legend()) |
lines | A list of Figure Line2D instances (rarely used, see Axes.lines) Figure(图表)的Line2D(线)列表(很少使用,请参见Axes.lines) |
patches | A list of Figure Patchs (rarely used, see Axes.patches) Figure(图表)的Patch(小块)列表(很少使用,请参见Axes.patches) |
texts | A list Figure Text instances Figure(图表)的Text(文本)列表 |
FigureImage:https://matplotlib.org/stable/api/image_api.html#matplotlib.image.FigureImageLegend:https://matplotlib.org/stable/api/legend_api.html#matplotlib.legend.LegendText:
https://matplotlib.org/stable/api/text_api.html#matplotlib.text.Text