Как преобразовать координаты ограничивающей рамки в соответствии с единицами подграфика?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать координаты ограничивающей рамки в соответствии с единицами подграфика?

Сообщение Anonymous »

Я потерялся в трансформации. Попытка визуализировать ограничивающую рамку текста с помощью патча. Ни необработанный bb_du, полученный с помощью .get_window_extent(), ни преобразованный bb_dc не возвращают размер ограничительной рамки, подходящий для создания прямоугольника.
Вот моя попытка:
Изображение

Код: Выделить всё

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# Plot rectangle to visualize the text bounding box
def plot_bbox(handle):
# Get the bounding box in display units
bb_du = handle.get_window_extent()

# Convert to data coordinates to display coordinates
t = ax.transData.inverted()
bb_dc = bb_du.transformed(t)
x0, y0 = bb_dc.min
x1, y1 = bb_dc.max
w = x1 - x0
h = y1 - y0
print(f'{x0:.2f}, {y0:.2f}, {w:.2f}, {h:.2f}')

# Draw a rectangle for the bounding box
rect = Rectangle((x0, y0), w, h, fc='none', color ='m', linewidth = 2)
ax.add_patch(rect)

# Plot text
fig_kw = dict(layout='constrained')
fig, ax = plt.subplots(**fig_kw, subplot_kw=dict(aspect=1))

xys = ((6, 1), (8, 1), (6, 3), (8, 3))
texts = (('aBjg', 90), ('aBjg', 10), ('aBjg', 60), ('aBjg', 30))
xo = yo = 0.3
for (x, y), (text, r) in zip(xys, texts):
ax.scatter((x,), (y,), c='C0')
text_h = ax.text(x+xo, y+yo, text, rotation=r, size=18)
plot_bbox(text_h)
Что не так с этим кодом? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... plot-units
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»