强基初中数学&学Python——第255课 数字和数学第三方模块Matplotlib之七:封装端-艺术家(Artist)教程3

对象容器

  我们知道了如何检查和设置要配置的给定对象的属性,那首先要知道如何获取该对象。如简介中所述,有两种对象:基本体和容器。基本体通常是想要配置(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.10.10.70.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([01], [10], 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

FigureImageFigure图像)小块列表-用于原始像素显示

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