Seite 1 von 1

Matplotlib Plott korret aktualisieren

Verfasst: Montag 20. April 2020, 17:31
von Particledust
Abend,

ich möchte in einen bestehenden Plott (f(x) = x, g(x) = x**2) extern einen Datenpunkt einfügen. Dazu werden die x- und y- Koordinaten eingegeben und anschließend auf einen Button gedrückt. Angenommen es wird ein Datenpunkt (x1, y1) eingefügt. Dann soll die GUI bei Eingabe eines zweiten Datepunkts (x2, y2) nur die Kurven und (x2, y2) anzeigen. Der erste Punkt soll also gelöscht werden.

Meine Lösung funktioniert nur teilweise: Es können zusätzliche Punkte (x,y) erzeugt werden, die alten werden jedoch nicht gelöscht....

Kennt jemand von euch einen Ansatz, um das oben beschriebene Problem zu lösen.


Code: Alles auswählen

from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk
import numpy as np

fig = Figure(figsize = (9, 6), facecolor = "white")

axis = fig.add_subplot(111)
x_values = np.array([1,2,3,4,5,6,7])
axis.plot(x_values, x_values, "-r")
axis.plot(x_values, x_values ** 2, "--g")
axis.grid()

root = tk.Tk()

Label(root, text = "x =" ).grid(row = 0, column = 0)
Label(root, text = "y =" ).grid(row = 1, column = 0)

x = DoubleVar()
y = DoubleVar()

x_entry = Entry(root, textvariable = x).grid(row = 0, column = 1)
y_entry = Entry(root, textvariable = y).grid(row = 1, column = 1)

def plotgraphs():
    axis.plot(x.get(), y.get(), "ko")
    
    canvas = FigureCanvasTkAgg(fig, master = root)
    canvas._tkcanvas.grid(row = 2, column = 1)

Button(root, text = "New Graphs", command = plotgraphs).grid(row = 0, column = 2)

canvas = FigureCanvasTkAgg(fig, master = root)
canvas._tkcanvas.grid(row = 2, column = 1)

root.mainloop()

Re: Matplotlib Plott korret aktualisieren

Verfasst: Sonntag 14. Juni 2020, 19:32
von tom.somebody
Hi, ich bin vor paar Minuten über deinen Forenbeitrag gestoßen, weil ich ein ähnliches Problem hatte. Falls ich dich richtig verstanden habe, dann sollte der folgende Code, so arbeiten, wie du es beschrieben hast:

Code: Alles auswählen

from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk
import numpy as np

fig = Figure(figsize = (9, 6), facecolor = "white")

axis = fig.add_subplot(111)
x_values = np.array([1,2,3,4,5,6,7])
axis.plot(x_values, x_values, "-r")
axis.plot(x_values, x_values ** 2, "--g")
axis.grid()

root = tk.Tk()

tk.Label(root, text = "x =" ).grid(row = 0, column = 0)
tk.Label(root, text = "y =" ).grid(row = 1, column = 0)

x = tk.DoubleVar()
y = tk.DoubleVar()

x_entry = tk.Entry(root, textvariable = x).grid(row = 0, column = 1)
y_entry = tk.Entry(root, textvariable = y).grid(row = 1, column = 1)

canvas = FigureCanvasTkAgg(fig, master = root)
canvas.draw()
canvas._tkcanvas.grid(row = 2, column = 1)

def plotgraphs():
    axis.cla()
    axis.plot(x.get(), y.get(), "ko")
    axis.plot(x_values, x_values, "-r")
    axis.plot(x_values, x_values ** 2, "--g")
    axis.grid()
    canvas.draw()

tk.Button(root, text = "New Graphs", command = plotgraphs).grid(row = 0, column = 2)

root.mainloop(
Mir hat das Tut: https://pythonprogramming.net/how-to-em ... inter-gui/ sehr weitergeholfen..auch für das Verständnis und so.