Обновите только один субплот, а не весь рисунок (используя matplotlib) - PullRequest
1 голос
/ 08 февраля 2020

У меня есть скрипт python, который предоставляет настраиваемый фильтр для масштабирования с помощью matplotlib, который будет использоваться в GUI. В частности, у меня есть разные субплоты, и мне нужно обновить ТОЛЬКО вид субплота, в котором я изменяю масштаб. Если я использую plt.draw (), он обновит все графические элементы рисунка. Как я могу настроить таргетинг только на художников, связанных с текущим сюжетом, другими словами, сделать что-то вроде ax.draw()?

Вот простой пример, иллюстрирующий проблему:

import matplotlib.pyplot as plt

#------------------------------------
# Definition of the initial figure
#------------------------------------

fig = plt.figure()

ax1 = fig.add_subplot(211)
ax1.plot([0,1],[0,1],'b-')
ax2 = fig.add_subplot(212)
ax2.plot([0,1],[0,1],'r-')

#------------------------------------
# Changing xlim in the 1st subplot with a click
#------------------------------------

def modify_subplot(event):
    ax1.set_xlim([0,0.5])
    plt.draw() # I want to replace this method with a
               # function that updates only the artists 
               # in ax1 without touching ax2

fig.canvas.mpl_connect('button_press_event', modify_subplot)

#------------------------------------
plt.show()

Я пытался заменить plt.draw () на ax1.draw(fig.canvas.get_renderer()), но ничего не обновляется.

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