Matplotlib Artist 教程

艺术家教程

使用Artist对象在画布上渲染。

matplotlib API分为三层。

  • matplotlib.backend_bases.FigureCanvas是在其上图形被绘制的区域
  • matplotlib.backend_bases.Renderer是知道如何在拉拢的对象 FigureCanvas
  • 并且matplotlib.artist.Artist是知道如何使用渲染器在画布上绘画的对象。

有两种类型Artists:基元和容器。基元表示,我们要画到画布的标准图形对象: Line2DRectangle, TextAxesImage,等,容器是存放它们的地方(Axis, AxesFigure)。

该标准使用是创建一个Figure实例,使用Figure创建一个或多个Axes或 Subplot实例,并使用Axes实例helper方法创建的图元。

 

 

 如果要Axes在任意位置创建,只需使用在0-1相对图形坐标add_axes()中获取列表的 方法[left, bottom, width, height]

 

 

 

 

 

 

 

 

 检查Artist属性的一种简便方法是使用该 matplotlib.artist.getp()函数(仅getp()在pyplot中),该函数 列出了属性及其值。该作品从派生类Artist为好,如,FigureRectangle这是Figure上面提到矩形属性:

 

 

 

    agg_filter = None
    alpha = None
    animated = False
    antialiased or aa = False
    bbox = Bbox(x0=0.0, y0=0.0, x1=1.0, y1=1.0)
    capstyle = butt
    children = []
    clip_box = None
    clip_on = True
    clip_path = None
    contains = None
    data_transform = BboxTransformTo(     TransformedBbox(         Bbox...
    edgecolor or ec = (0.0, 0.0, 0.0, 1.0)
    extents = Bbox(x0=0.0, y0=0.0, x1=576.0, y1=396.0)
    facecolor or fc = (1.0, 1.0, 1.0, 1.0)
    figure = Figure(576x396)
    fill = True
    gid = None
    hatch = None
    height = 1
    in_layout = True
    joinstyle = miter
    label = 
    linestyle or ls = solid
    linewidth or lw = 0.0
    patch_transform = CompositeGenericTransform(     BboxTransformTo(   ...
    path = Path(array([[0., 0.],        [1., 0.],        [1.,...
    path_effects = []
    picker = None
    rasterized = None
    sketch_params = None
    snap = None
    transform = CompositeGenericTransform(     CompositeGenericTra...
    transformed_clip_path_and_affine = (None, None)
    url = None
    verts = [[  0.   0.]  [576.   0.]  [576. 396.]  [  0. 396....
    visible = True
    width = 1
    window_extent = Bbox(x0=0.0, y0=0.0, x1=576.0, y1=396.0)
    x = 0
    xy = (0, 0)
    y = 0
    zorder = 1

对象容器

现在我们知道了如何检查和设置要配置的给定对象的属性,我们需要知道如何获取该对象。如引言中所述,有两种对象:基元和容器。尽管容器还具有一些属性,但是通常也要配置图元(Text 实例的字体,a 的宽度Line2D),例如, 容器是一个包含绘图中许多图元的容器,但是它还具有诸如的属性来控制x轴是“线性”还是“对数”。在本节中,我们将回顾各种容器对象存储要获取的对象的位置。Axes ArtistxscaleArtists

图容器

顶层容器Artist是 matplotlib.figure.Figure,它包含图中的所有内容。图的背景是 Rectangle,存储在中 Figure.patch当您在图中添加子图(add_subplot())和轴(add_axes())时,它们将被附加到Figure.axes这些也由创建它们的方法返回:

 

 由于该图保留了“当前轴”(请参阅Figure.gca和 Figure.sca的概念 以支持pylab / pyplot状态机,

因此您不应直接从轴列表中插入或删除轴,而应使用 add_subplot()和 add_axes()方法插入,以及 delaxes()方法删除。

但是,您可以自由地遍历轴列表或对其进行索引以访问Axes要自定义的实例。这是一个打开所有轴网格的示例:

 

 

轴容器

matplotlib.axes.Axes是matplotlib宇宙的中心-它包含Artists图中使用的所有绝大多数,以及许多用于创建并将其添加 Artists到自身的辅助方法,以及用于访问和自定义Artists其包含的辅助方法与一样 Figure,它包含一个 , 用于笛卡尔坐标和 极坐标;此补丁确定绘图区域的形状,背景和边框:Patch patchRectangleCircle

当您调用绘图方法(例如,规范化 plot()并传入数组或值列表)时,该方法将创建一个matplotlib.lines.Line2D() 实例,使用Line2D作为关键字参数传递的所有属性更新该行,将该行添加到Axes.lines容器中,并将其返回到您:

 

 plot返回行列表,因为您可以传递多个x,y对来进行绘制,并且我们将长度为list的第一个元素解压缩到line变量中。该行已添加到 Axes.lines列表中:

 

 同样,创建补丁的方法(例如 bar()创建矩形列表)会将补丁添加到Axes.patches列表中:

 

 除了所有这些之外Artists,还Axes包含两个重要的Artist容器:XAxis 和和YAxis,用于处理刻度线和标签。

它们存储为实例变量 xaxis和 yaxisXAxisYAxis 容器进行详细说明,但要注意的是,Axes包含在转移呼叫许多辅助方法 Axis的实例,

所以你往往不直接需要与他们合作,除非你想。例如,您可以XAxis使用Axeshelper方法设置ticklabel 的字体颜色

 

 

轴容器

matplotlib.axis.Axis情况下处理该刻度线的图中,网格线,刻度标记标签和轴标签。您可以分别为y轴配置左侧和右侧的刻度,为x轴分别配置左侧和右侧的刻度。Axis 也存储在自动缩放中使用的数据和视图间隔,平移和缩放,以及所述Locator和 Formatter实例,其控制,其中蜱被放置以及它们是如何被表示为字符串。

每个Axis对象都包含一个label属性(这是pyplotxlabel()和的调用中进行修改 属性ylabel())以及主要和次要刻度线的列表。刻度线是 XTickYTick实例,其中包含呈现刻度线和ticklabel的实际行和文本基元。由于报价是根据需要动态创建的(例如,在平移和缩放时),因此您应该通过其访问器方法get_major_ticks() 和来访问主要和次要报价的列表get_minor_ticks()尽管刻度线包含所有原始元素,并且将在下面进行介绍,但是Axis实例具有访问器方法,这些方法返回刻度线,刻度标签,刻度位置等:

 

 

 

 

 

 

刻度容器

matplotlib.axis.Tick是我们从血统最终容器对象Figure到 AxesAxis 的Tick

所述Tick包含tick和网格线的情况下,以及在上部和下部蜱标签实例。这些都可以作为的属性直接访问Tick

这是一个示例,该示例使用美元符号设置右侧刻度线的格式器,并在yaxis的右侧将它们设置为绿色。

 

 

 

 

 

posted @ 2020-04-19 15:27  Leon&Joker  阅读(821)  评论(0)    收藏  举报