python matplotlib blit для осей или сторон фигуры?

Я пытаюсь обновить некоторые сюжеты, которые у меня есть в gui, каждый раз, когда я иду через подходящую процедуру. Кроме того, эти графики находятся в рамке, которая может быть изменена, поэтому оси и метки и т. Д. Должны быть перерисованы после изменения размера. Так было интересно, кто-нибудь знал, как обновлять стороны фигуры, используя что-то вроде plot.figure.canvas.copy_from_bbox и plot.figure.canvas.copy_from_bbox . Похоже, что копируется и размывается фон области графического отображения (где рисуются линии), а не по сторонам графика или рисунка (где есть метки и тики). Я пытаюсь обновить свои графики с помощью проб и ошибок и чтения документации mpl, но до сих пор мой код jst стал ужасно сложным с такими вещами, как self.this_plot.canvas_of_plot..etc.etc.. .plot.figure.canvas.copy_from_bbox … который, вероятно, слишком запутан. Я знаю, что мой язык может быть немного выключен, но я пытался прочитать документацию matplotlb, и различия между рисунком, холстом, графикой, графиком, рисунком. Настроить и т. Д. Начинают меня уклоняться. Поэтому мой первый и главный вопрос:

1 – Как вы обновляете тики и метки вокруг графика matplotlib.

во-вторых, поскольку я хотел бы лучше понять, что ответ на этот вопрос,

2 – В чем разница между сюжетом, фигурой, холстом и т. Д. В отношении области, которую они покрывают в графическом интерфейсе.

Огромное спасибо за помощь.

  • Цвет линии зависит от индекса данных для линейного графика в matplotlib?
  • One Solution collect form web for “python matplotlib blit для осей или сторон фигуры?”

    Все это, конечно, может быть довольно запутанным сначала!

    Начнем с того, что если вы цепляете клещей и т. Д., Нет смысла указывать на блиты. Blitting – это просто способ избежать повторного рисования всего, если меняются только некоторые вещи. Если все меняется, нет смысла использовать блиты. Просто перерисуйте сюжет.

    В принципе, вы просто хотите fig.canvas.draw() или plt.draw()

    Во всяком случае, чтобы ответить на ваш первый вопрос, в большинстве случаев вам не нужно будет обновлять их вручную. Если вы измените границы оси, они будут обновляться. Вы сталкиваетесь с проблемами, потому что вы смеетесь только внутри осей, а не перерисовываете сюжет.

    Что касается вашего второго вопроса, хороший, подробный обзор – это руководство пользователя Руководства пользователя Matplotlib .

    В двух словах есть два отдельных слоя. Один из них касается группировки вещей в те части, о которых вы будете беспокоиться при построении графика (например, фигура, оси, ось, линии и т. Д.), А другой – об рендеринге и рисовании в целом (холст и рендеринг).

    Все, что вы видите на графике matplotlib, – это Artist . (Например, текст, линия, оси и даже сама фигура.) Художник a) знает, как рисовать себя, и б) может содержать других художников.

    Для того, чтобы художник рисовал себя, он использует рендерер (специфический для бэкэнда модуль, к которому вы почти никогда не прикасаетесь напрямую), чтобы рисовать на FigureCanvas aka «canvas» (абстракция вокруг либо векторной страницы, либо пиксельного буфера) , Чтобы нарисовать все на фигуре, вы вызываете canvas.draw() .

    Поскольку художники могут быть группами других художников, есть иерархия к вещам. В принципе, что-то вроде этого (очевидно, это меняется):

     Figure Axes (0-many) (An axes is basically a plot) Axis (usually two) (x-axis and y-axis) ticks ticklabels axis label background patch title, if present anything you've plotted, eg Line2D's 

    Надеюсь, это сделает вещи более четкими, во всяком случае.

    Если вы действительно хотите использовать blitting для обновления ярлыков меток и т. Д., Вам нужно будет захватить и восстановить полный регион, включая их. Этот регион немного сложно получить, потому что он не точно известен только после рисования (рендеринг текста в matplotlib более сложный, чем рендеринг других вещей из-за поддержки латекса и т. Д.). Вы можете это сделать, и я буду рад привести пример, если это действительно то, что вы хотите, но это, как правило, не даст преимущество в скорости, а просто рисует все. (Исключением является то, что вы обновляете только один подзаговор в фигуре с большим количеством подзаголовков.)

    Python - лучший язык программирования в мире.