“标准化图形坐标”如何工作?

时间:2019-06-17 08:59:31

标签: matplotlib

在matplotlib中,我最近遇到过“标准化图形坐标”一词,它显然是由四个参数组成的矩形的规格。

很明显,一个矩形可以用四个数字描述,我猜这四个数字以某种方式描述了矩形的尺寸和位置。但是,我还没有找到关于这些参数中的哪个指定哪个值的答案。

此外,我不确定这是matplotlib专用术语还是一般含义,因为matplotlib文档没有引用或链接与此术语相关的任何来源。

请问有人可以阐明这个问题吗?

2 个答案:

答案 0 :(得分:3)

有几种使用标准化图形坐标的功能。

通常可能性是

  • (left, bottom, width, height)(在matplotlib中称为“界限”);或
  • (left, bottom, right, top)(称为“范围”)。

希望文档会清楚说明在每种情况下应该使用哪个4个元组。

在这里,您似乎对GridSpec的{​​{1}}参数tight_layout感兴趣。来自its documentation

  

rect:4个浮点数的元组,可选
  标准化图形中的rect矩形坐标将适合整个子图区域(包括标签)。默认值为(0,0,1,1)。

答案 1 :(得分:1)

要回答您的最后一个问题,术语归一化不是特定于matplotlib的,您可以从wikipedia中获得非常简短的介绍。

对于Matplotlib:相对于不同的对象(例如,轴,图形),您可以具有不同的坐标系。 从所选参考对象的4个角始终具有以下坐标的意义上说,这些系统中的每一个都已标准化:

(0,1) Top left corner 
(1,1) Top right corner 
(1,0) Bottom right corner 
(0,0) Bottom left corner 

其中每对的第一个元素指的是x-axis,第二个元素指的是y-axis

这使艺术家对象的注释或放置更加容易,因为您可以使用任何可用的坐标系指定要添加的元素的位置。 您需要做的就是通过将变换对象传递到变换参数来选择合适的坐标系。

一些例子:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.plot([5.], [2.], 'o')

circle=plt.Circle((0, 0), 0.1, color="g",transform=ax.transAxes) #bottom (y=0) left (x=0) green circle of radius 0.1 (expressed in coord system)
ax.add_artist(circle)

ax.annotate('I am the top (y=1.0) right (x=1.0) Figure corner',
            xy=(1, 1), xycoords=fig.transFigure,
            xytext=(0.2, 0.2), textcoords='offset points',
            )

plt.text(  # position text relative to data
    5., 2., 'I am the (5,2) data point',  # x, y, text,
    ha='center', va='bottom',   # text alignment
    transform=ax.transData      # coordinate system transformation
)
plt.text(  # position text relative to Axes
    1.0, 0.0, 'I am the bottom (y=0.0) right (x=1.0) axis corner',
    ha='right', va='bottom',
    transform=ax.transAxes
)
plt.text(  # position text relative to Figure
    0.0, 1.0, 'I am the top (y=1.0) left (x=0.0) figure corner',
    ha='left', va='top',
    transform=fig.transFigure
)


plt.show()

example