Получить bbox в координатах данных в matplotlib - PullRequest
7 голосов
/ 29 марта 2011

У меня есть bbox объекта matplotlib.patches.Rectangle (столбец гистограммы) в координатах экрана, например:

Bbox(array([[ 0.,  0.],[ 1.,  1.]])

Но мне бы хотелось, чтобы это были не координаты отображения, а данныекоординаты.Я уверен, что это требует преобразования.Какой способ сделать это?

1 Ответ

14 голосов
/ 29 марта 2011

Я не уверен, как вы получили Bbox в отображении координат.Почти все, с чем пользователь взаимодействует, находится в координатах данных (они мне кажутся координатами оси или данных, а не отображают пиксели).Следующее должно полностью объяснить преобразования, как они применяются к Bbox:

from matplotlib import pyplot as plt
bars = plt.bar([1,2,3],[3,4,5])
ax = plt.gca()
fig = plt.gcf()
b = bars[0].get_bbox()  # bbox instance

print b
# box in data coords
#Bbox(array([[ 1. ,  0. ],
#       [ 1.8,  3. ]]))

b2 = b.transformed(ax.transData)
print b2
# box in display coords
#Bbox(array([[  80.        ,   48.        ],
#       [ 212.26666667,  278.4       ]]))

print b2.transformed(ax.transData.inverted())
# box back in data coords
#Bbox(array([[ 1. ,  0. ],
#       [ 1.8,  3. ]]))

print b2.transformed(ax.transAxes.inverted())
# box in axes coordinates
#Bbox(array([[ 0.        ,  0.        ],
#       [ 0.26666667,  0.6       ]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...