У меня есть скрипт 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())
, но ничего не обновляется.