CSV plot in Tkinter mit Pandas und Matplot

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benni_
User
Beiträge: 2
Registriert: Sonntag 25. Oktober 2020, 16:17

Hallo,
ich bin neu in Python.
Ich möchte eine CSV einlesen und diese anschließend in ein Tkinter Fenster mit Matplot plotten. Leider wird mir im Fenster meine Kurve nicht angezeigt.

"Normales" Plotten mit Pandas geht aber. Nur leider mit der Einbindung in Tkinter nicht.

Mein Code:

Code: Alles auswählen

from tkinter import *
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)

fenster= Tk()
fenster.title("Sensordaten")
fenster.geometry("900x600")


figure = Figure(figsize=(5, 4), dpi=100)
data1 = figure.add_subplot(1, 1, 1)
data1 = pd.read_csv("/home/pi/Desktop/Test.csv")
data1.plot(x="x",y="y")
canvas = FigureCanvasTkAgg(figure, fenster)

canvas.get_tk_widget().pack()
toolbar= NavigationToolbar2Tk(canvas,fenster)
toolbar.update()
canvas.get_tk_widget().pack()


fenster.mainloop()
Hier das Bild wie es aktuell aussieht.
Bild
https://drive.google.com/file/d/16JFCXT ... sp=sharing

Meine CSV sieht wie folgt aus:

x,y
1,5
2,10
3,15
4,20

Vielen Dank im Voraus :)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutze kein *-Importe. Tkinter wird über `import tkinter as tk` importiert.
Du machst zwar eine Tkinter-Figure, bentzt diese aber dann gar nicht, weil `data1` überschrieben wird. Daher sind richtige Namen wichtig. figure.add_subplot liefert keine Daten (vor allem keines mit einer 1 dran).

Code: Alles auswählen

import tkinter as tk
import pandas as pd
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk

def main():
    fenster= tk.Tk()
    fenster.title("Sensordaten")

    figure = Figure(figsize=(5, 4), dpi=100)
    axis = figure.add_subplot(1, 1, 1)
    test_data = pd.read_csv("/home/pi/Desktop/Test.csv")
    test_data.plot(ax=axis, x="x", y="y")

    canvas = FigureCanvasTkAgg(figure, fenster)
    canvas.get_tk_widget().pack()
    toolbar= NavigationToolbar2Tk(canvas,fenster)
    toolbar.update()
    canvas.get_tk_widget().pack()
    fenster.mainloop()
    
if __name__ == '__main__':
    main()
Antworten