Ich versuche, ein einzelnes Diagramm neu zu zeichnen, wenn der Benutzer auf dem Bildschirm klickt. Derzeit ist das Diagramm beim ersten Klick gezeichnet. Danach werden neue Plots an die Arbeitsfläche angehängt. Was ich tun möchte, ist, den ersten Plot zu "löschen" oder "zu löschen" und neu zu zeichnen oder ihn mit den neuen Daten zu aktualisieren.Aktualisieren Tkinter Matplotlib Abbildung
Dies ist der Teil verantwortlich für diese spezifische Handlung Unentschieden:
class AppGUI(Tk.Frame):
def __init__(self, parent):
self.parent = parent
self.initGUI()
self.plot()
def initGUI(self):
self.vf_frame = Tk.Frame(self.parent, bd=1, relief=Tk.SUNKEN)
self.vf_frame.pack(side=Tk.TOP, fill="both", expand=True)
def plotVF(self, u, v):
# Canvas of VF
m = np.sqrt(np.power(u, 2) + np.power(v, 2))
xrange = np.linspace(0, u.shape[1], u.shape[1]);
yrange = np.linspace(0, u.shape[0], u.shape[0]);
x, y = np.meshgrid(xrange, yrange)
mag = np.hypot(u, v)
scale = 1
lw = scale * mag/mag.max()
f, ax = plt.subplots()
h = ax.streamplot(x, y, u, v, color=mag, linewidth=lw, density=3, arrowsize=1, norm=plt.Normalize(0, 70))
ax.set_xlim(0, u.shape[1])
ax.set_ylim(0, u.shape[0])
ax.set_xticks([])
ax.set_yticks([])
#cbar = f.colorbar(h, cax=ax)
#cbar.ax.tick_params(labelsize=5)
c = FigureCanvasTkAgg(f, master=self.vf_frame)
c.show()
c.get_tk_widget().pack(side=Tk.LEFT, fill="both", expand=True)
Muss ich f
und ax
Attribute meiner Klasse zu tun haben, um dieses Ergebnis zu erreichen? Um es klar zu machen, wird plotVF
durch andere Methoden aktualisiert.
PS: Ich kann den Farbbalken auch nicht mit den kommentierten Zeilen anzeigen. Es sagt 'Streamplot' object has no attribute 'autoscale_None'
.