【问题标题】:Matplotlib's Figure and Axes explanationMatplotlib 的 Figure 和 Axes 解释
【发布时间】:2016-07-02 14:58:13
【问题描述】:

我对 matplotlib 非常陌生,尽管我知道它可能非常强大。 我一直在阅读大量教程和示例,要了解 matplotlib 的 Figure 和 Axes 是如何工作的确实很麻烦。我正在用附图说明我想要理解的内容。

我知道如何创建以英寸为单位的特定尺寸的图形实例。但是,困扰我的是如何在每个子图中使用相对坐标(底部=0,左侧=0,顶部=1,右侧=1)创建子图,然后创建轴,如图所示。 因此,例如,我想创建一个“父”绘图区域(例如(6 英寸,10 英寸))。然后,我想创建两个子区域,每个区域的大小为(3 英寸,3 英寸),距离顶部 1 英寸,两个垂直子区域之间的距离为 2 英寸,距离底部 1 英寸。然后,左边有 1 英寸的空间,写入时有 2 英寸的空间。同时,我希望能够获得子情节区域相对于主情节区域的坐标。 然后,在第一个子图区域内,我想创建 2 个轴实例,轴 1,具有相对于子图区域 1 (0.1,0.7,0.7,0.2) 和轴 2 (0.1,0.2,0.7,0.5) 的坐标.然后我当然希望能够在这些轴上绘图,例如ax1.plot()....
如果你能提供一个示例代码来实现这一点,那么我可以研究它。 您的帮助将不胜感激!

【问题讨论】:

  • subplotAxes 对象实际上是一回事。正如您在 matplotlib 中描述的那样,实际上并没有“子图”。您可以使用gridspec 创建您的三个Axes 对象,而无需将它们放入您的“子图”
  • 那么,为什么matplotlib有两个独立的类Axessubplot,其实它们是同一个东西呢?
  • fig.add_subplot 返回一个 Axes 实例。 subplot 不是一个类,它是一个返回轴的函数。
  • 嗨@tom,那么fig.add_subplotfig.add_axes 有什么区别?
  • 在评论中写的太多了,所以我添加了一些细节的答案

标签: matplotlib figure axes


【解决方案1】:

subplotAxes 对象实际上是一回事。正如您在 matplotlib 中描述的那样,实际上并没有“子图”。您可以使用gridspec 创建您的三个Axes 对象,而无需将它们放入您的“子图”中。

有几种不同的方法可以在您的图中创建 Axes 实例。

fig.add_axes 将在给它的位置创建一个Axes 实例(你在图形坐标中给它[left,bottom,width,height](即0,0 是左下角,1,1 是右上角)。

fig.add_subplot 也会创建一个Axes 实例。在这种情况下,不是给它一个要在其中创建的矩形,而是给它你想要的子图的行数和列数,然后是 plot_number,其中plot_number 从 1 开始,首先跨行递增,然后最多有nrows * ncols

例如,要在 2 行 2 列的网格中创建左上角轴,您可以执行以下操作:

fig.add_subplot(2,2,1)

或简写

fig.add_subplot(221)

还有一些更可自定义的方法来创建Axes,例如gridspecsubplot2grid,它们可以轻松创建许多不同形状和大小的子图。

【讨论】:

  • @汤姆,非常感谢。您的帮助确实有所作为,因为我无法从 matplotlib 文档中理解所有这些内容。我很感激!
  • @tom 假设一个人已经生成了多个想要添加到图形实例的轴。有没有办法做到这一点?
  • @MPath 我想这取决于你如何创建它们等。可能最好在一个新问题中提出这个问题,而不是我尝试在对不同问题的评论中解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 2022-11-24
  • 2018-04-26
相关资源
最近更新 更多