matplotlib:轴定位[l,b,w,h]中的单位是什么(涉及到imshow)?

时间:2014-07-28 15:57:49

标签: python matplotlib

非常简单和愚蠢的问题,我找不到答案;当我做手动轴定位时,如下:

fig = plt.figure(figsize=(17.5,8.0))
left = 0.1
bottom = 0.03
width = 0.3
height = 0.6
ax1 = plt.axes([left, bottom, width, height])
left += (width+0.12)
ax2 = plt.axes([left, bottom, width, height])

这些left, bottom, width, height变量以相对于图形大小的单位设置,但对应于:leftwidth〜水平fig_size而{{1} }和bottom ~vertical height?我对此的实验反驳了这一点,并且根本不清楚,因为它似乎取决于fig_size的垂直和水平组成部分......我不应该说figsize文档非常也不清楚它(matplotlibplt.axes都没有提供任何有用的信息。那么,请帮帮忙?!

编辑:我会在这里发布我的发现,因为也许对其他人也有帮助...... 首先,现在看来,我首先是正确的(正如答案和评论所证实的那样),而fig.add_axesleft确实以横向 - width为单位进行衡量,而{ {1}}和fig_size是垂直测量的 - bottom单位 - 一切都与第一个答案中的显示方式完全相同。

但是,它依赖于上下文(!),如果您正在进行height下游 - 这似乎会覆盖fig_sizeplt.imshow比例并创建方轴(对于我的数据) ,因为我有width矩阵height},其大小为n。我不知道n的这种行为。

示例:

带有min(width, height)

imshow<code>left = 0.1 bottom = 0.03 width = 0.3 height = 0.3</code> with <code>imshow</code>

left = 0.1 bottom = 0.03 width = 0.3 height = 0.3没有imshow或任何其他内容:

<code>left = 0.1 bottom = 0.03 width = 0.3 height = 0.3</code> without <code>imshow</code> or any other content 所以left = 0.1 bottom = 0.03 width = 0.3 height = 0.3是混淆和“反驳”的根源。

1 个答案:

答案 0 :(得分:1)

David Zwicker所述,坐标是相对于图形大小的。如果您的实验似乎反驳了这一点,请考虑刻度线,轴标签等的位置

让我们创建一个具有与图相同坐标系的第三个轴,并在那里显示轴区域:

fig = plt.figure(figsize=(17.5,8.0))
left = 0.1
bottom = 0.03
width = 0.3
height = 0.6

# let us create third axes with the figure coordinates:
ax3 = plt.axes([0, 0, 1, 1], frameon=False, zorder=10)

ax1 = plt.axes([left, bottom, width, height])
ax3.add_artist(plt.Rectangle((left, bottom), width, height, facecolor=(1,0,0,.5), edgecolor='none'))

left += (width+0.12)
ax2 = plt.axes([left, bottom, width, height])
ax3.add_artist(plt.Rectangle((left, bottom), width, height, facecolor=(1,0,0,.5), edgecolor='none'))

这给出了:

enter image description here

轴位置为:

In [37]: ax1.get_position()
Out[37]: Bbox('array([[ 0.1 ,  0.03],\n       [ 0.4 ,  0.63]])')

In [38]: ax2.get_position()
Out[38]: Bbox('array([[ 0.52,  0.03],\n       [ 0.82,  0.63]])')

也许这澄清了定位。

至少从视觉上看,轴的下边缘可能真的比底部高3%,左边缘距离图的左边缘10%和52%。