Seite 1 von 1

Inhalt eines Pandas DataFrame in einer tkinter GUI plotten mit Sekundärachse

Verfasst: Montag 24. April 2023, 10:07
von NinoBaumann
Hallo,

ich habe habe sehr viele Prozessdaten, welche ich verarbeitet und in ein DataFrame gepackt habe. Jetzt möchte ich diverse Spalten daraus in einer GUI plotten. Bisher habe ich folgenden Code geschrieben:

Code: Alles auswählen

fig = Figure(figsize = (4, 4), dpi = 100)

plot1 = fig.add_subplot(111)

x.plot(x="Diff_Rollkreis", y="Beugemoment", style='o', xlabel='Diff. Rollkreis-Ø [mm]', ylabel='Beugemoment [Nm]', color='red', markersize=2, ax=plot1)
x.plot(x="Diff_Rollkreis", y="Axialspiel", style='o', xlabel='Diff. Rollkreis-Ø [mm]', ylabel='Axialspiel [mm]', color='blue', markersize=2, ax=plot1)

canvas = FigureCanvasTkAgg(fig, master = master)
canvas.get_tk_widget().place(x=235,y=0)
canvas.draw()
Damit bekomme ich beide Punktewolken in einen Plot. Jetzt möchte ich aber, dass das Beugemoment auf der Primärachse (Y-Achse links) und das Axialspiel auf der Sekundärachse (Y-Achse rechts) aufgetragen wird. Wie löse ich das am geschicktesten?

Re: Inhalt eines Pandas DataFrame in einer tkinter GUI plotten mit Sekundärachse

Verfasst: Dienstag 25. April 2023, 06:42
von NinoBaumann
Hallo Leute,

war doch recht einfach. Bin gestern einfach auf dem Schlauch gestanden. Hier die Lösung:

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
from Function_df_Data_7370 import df_Data_7370

master = tk.Tk()
master.geometry("1200x1100")

x = df_Data_7370(Startdatum, Enddatum) 

fig, ax = plt.subplots(figsize=(10, 5))
ax.scatter(x['Diff_Rollkreis'], x['Beugemoment'], color="red", marker="o", s=1)
ax.set_xlabel('Diff. Rollkreis-Ø [mm]', fontsize=12)
ax.set_ylabel('Beugemoment [Nm]', fontsize=12, color="red")
ax.set_ylim(0,10)

ax2 = ax.twinx()
ax2.scatter(x['Diff_Rollkreis'], x['Axialspiel'], color="blue", marker="o", s=1)
ax2.set_ylabel("Axialspiel [mm]", fontsize=12, color="blue")
ax2.set_ylim(0,1)

canvas = FigureCanvasTkAgg(fig, master = master)
canvas.get_tk_widget().place(x=235,y=0)

master.mainloop()

Re: Inhalt eines Pandas DataFrame in einer tkinter GUI plotten mit Sekundärachse

Verfasst: Dienstag 25. April 2023, 08:45
von __blackjack__
Das mit der Pixel-`geometry()` und dem `place()` funktioniert aber nur wenn das zufällig halbwegs zu der Plotgrösse in Inches passt. Den `geometry()`-Aufruf sollte man weg lassen und `grid()` oder `pack()` statt `place()` verwenden.