我对matplotlib非常新,但我知道它可以非常强大。 我一直在阅读一些教程和示例,了解matplotlib的图形和轴如何工作真的很麻烦。我用附图说明了我正在努力理解的内容。
我知道如何以英寸为单位创建一定大小的图形实例。然而,困扰我的是如何在每个子图中创建子图,然后在相对坐标(底部= 0,左= 0,顶部= 1,右边= 1)中创建轴,如图所示。
所以,例如,我想创建一个"父母"情节区域(比如说(6英寸,10英寸))。然后,我想创建两个子图区域,每个区域的大小(3英寸,3英寸),顶部距离为1英寸,两个垂直子图区域之间为2英寸,底部为1英寸。然后,在左边的1英寸空间和写入的2英寸空间。同时,我希望能够获得相对于主要绘图区域的子图区域的坐标。
然后,在第一个子图区域内,我想创建2个轴实例,其中Axis 1具有相对于Subplot Area1(0.1,0.7,0.7,0.2)和Axes 2(0.1,0.2,0.7, 0.5)。然后我当然希望能够在这些轴上进行绘图,例如,ax1.plot()....
如果你能提供一个示例代码来实现它,那么我可以研究它。
非常感谢您的帮助!
答案 0 :(得分:4)
subplot
和Axes
对象实际上是一回事。没有真正的"子情节"正如你在matplotlib中描述的那样。您只需使用Axes
创建三个gridspec
对象,而无需将它们放入"子图"。
在图中创建Axes
个实例有几种不同的方法。
fig.add_axes
会在给定的位置创建Axes
个实例(您在图形坐标中给出[left,bottom,width,height]
(即0,0
在左下角,{{1}在右上角。)
fig.add_subplot
还会创建一个1,1
实例。在这种情况下,不是给它创建一个矩形,而是给它你想要的子图的行数和列数,然后Axes
,其中plot_number
从1开始,递增首先跨行,最多为plot_number
。
例如,要在2行和2列的网格中创建左上角的轴,您可以执行以下操作:
nrows * ncols
或简写
fig.add_subplot(2,2,1)
还有一些可自定义的方法可以创建fig.add_subplot(221)
,例如gridspec
和subplot2grid
,可以轻松创建许多不同形状和大小的子图。