Matplotlib 的 Figure 和 Axes 解释

标签 matplotlib figure axes

我对 matplotlib 真的很陌生,尽管我知道它可以非常强大。
我一直在阅读大量的教程和示例,要了解 matplotlib 的 Figure 和 Axes 的工作原理真的很麻烦。我正在用附图说明我试图理解的内容。 enter image description here

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

最佳答案

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

有几种不同的创建方式 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同样,例如 gridspec subplot2grid 这允许轻松创建许多不同形状和大小的子图。

关于Matplotlib 的 Figure 和 Axes 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040605/

相关文章:

python - matplotlib 轴 ('tight' )不起作用?

python - 在 Pandas 图上标记事件点

python - 使用 Python 求解非线性微分一阶方程

html - stitch/Rstudio编译笔记本: modify default fig width,高度?

matlab - 在 MATLAB 中不重新缩放的情况下在轴外添加图例

r - ggplot2:x 轴刻度之间的条形图

python - LogLog 回归线不是直线且对数值为负?

python - matplotlib + python : figure size for fig. figimage 和 fig.savefig

r - R Markdown PDF 中图上方的图标题

figure - 图形与文字之间的间距