Мне нужно нарисовать прямоугольники с небольшим ВНУТРЕННИМ отступом (например, 2 пикселя), чтобы они не соприкасались с непосредственно соседними прямоугольниками. Я бы хотел, чтобы заполнение оставалось постоянным после любого изменения размера (масштабирования).
Пример ниже иллюстрирует то, что я пробовал до сих пор, а именно использовать ax.transData.inverted()< /code> для преобразования пикселей в блоки данных, но это, похоже, не дает последовательных результатов (т. е. заполнение меняется при разных уровнях масштабирования).
import matplotlib.pyplot as plt
import matplotlib.patches as patches
class Rectangle(patches.Rectangle):
def __init__(self, x, y, w, h, pad, **kwargs) -> None:
self._x, self._y, self._w, self._h, self._pad = x, y, w, h, pad
super().__init__((self._x, self._y), self._w, self._h, **kwargs)
def add_to_axes(self, ax) -> None:
ax.add_patch(self)
self.figure.canvas.mpl_connect("draw_event", self._on_draw)
self._ax = ax
# Keep track of current axes limits
self._xlim = ax.get_xlim()
self._ylim = ax.get_ylim()
self._update()
def _on_draw(self, event) -> None:
# Check if axes limits have changed
if self._xlim == self._ax.get_xlim() and self._ylim == self._ax.get_ylim():
return
self._update()
def _update(self) -> None:
# Update the padding
self._xlim, self._ylim = self._ax.get_xlim(), self._ax.get_ylim()
print("yes - i am a resize event")
# Calculate pixel-based padding
inv = self._ax.transData.inverted()
dx, dy = inv.transform((self._pad, self._pad)) - inv.transform((0, 0)) #
Подробнее здесь: https://stackoverflow.com/questions/787 ... ls-that-ad
Python matplotlib — рисует прямоугольники с небольшими внутренними отступами (в пикселях), которые автоматически настраи ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Matplotlib.patches.Rectangle создает прямоугольники с неодинаковым размером ширины линии.
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблема с отступами Yaml от ruamel.yaml для автоматизации, выполненной на Python
Anonymous » » в форуме Python - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Python Matplotlib рисует изображение без фона поверх другого изображения на рисунке.
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-