Как работают «нормализованные координаты фигуры»? - PullRequest
1 голос
/ 17 июня 2019

В matplotlib я недавно столкнулся с термином «нормализованные координаты фигуры», который, по-видимому, является спецификацией прямоугольника по четырем параметрам.

Очевидно, что прямоугольник можно описать четырьмя числами, иЯ предполагаю, что эти четыре числа как-то описывают размеры, а также расположение прямоугольника.Однако мне не удалось найти ответ относительно того, какой из этих параметров указывает какое значение.

Кроме того, я не уверен, является ли это термином, относящимся к matplotlib, или термином общего значения, так какДокументация matplotlib не цитирует и не ссылается на какие-либо источники в отношении этого термина.

Может кто-нибудь пролить свет на эту проблему, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 18 июня 2019

Существует несколько функций, в которых используются нормализованные координаты фигуры.

В целом возможности

  • (left, bottom, width, height) (это называется "границы" в matplotlib); или
  • (left, bottom, right, top) (называется "экстент").

Надеюсь, из документации будет понятно, какой 4 кортежа ожидается в соответствующем случае.

Здесь вас, кажется, интересует параметр GridSpec tight_layout rect. С его документация

rect: кортеж из 4 поплавков, необязательно
(left, bottom, right, top) прямоугольник в нормализованных координатах фигуры, в который будет помещаться вся область вспомогательных участков (включая метки). По умолчанию (0, 0, 1, 1).

1 голос
/ 17 июня 2019

Чтобы ответить на ваш последний вопрос, термин нормализация не зависит от 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...