Seite 1 von 1

Plot/Graph rotieren

Verfasst: Freitag 11. November 2022, 12:39
von c.schroeder
Hallo,

ich habe einen Plot erstellt, der ganz "normal" aussieht. x-Achse = Höhe, y-Achse = Wahrscheinlichkeit. Die Punkte werden über die x-Achse miteinander verbunden.

Code: Alles auswählen

import tkinter as tk
from pandas import DataFrame
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

liste_höhe = [1,2,3,4,5,6] 
liste_wahrscheinlichkeit = [0.3,0.5,0.8,0.7,0.4,0.2]        

data2 = {'Höhe': liste_höhe, 'Wahrscheinlichkeit': liste_wahrscheinlichkeit}
df2 = DataFrame(data2,columns=['Höhe','Wahrscheinlichkeit'])

root= tk.Tk() 
  
figure2 = plt.Figure(figsize=(5,4), dpi=100)
ax2 = figure2.add_subplot(111)
line2 = FigureCanvasTkAgg(figure2, root)
line2.get_tk_widget().grid(row = 0, column = 0)
df2 = df2[['Höhe','Wahrscheinlichkeit']].groupby('Höhe').sum()
df2.plot(kind='line', legend=True, ax=ax2, color='r',marker='o', fontsize=10)

root.mainloop()
Nun hätte ich es aber gerne so, dass der Graph gedreht dargestellt wird. Mit der x-Achse = Wahrscheinlichkeit, y-Achse = Höhe. Das funktioniert auch, wenn man die Begriffe in den Funktionen umdreht, doch die Punkte werden nicht korrekt miteinander verbunden. Die müssten ja jetzt über die y-Achse miteinander verbunden werden...

Code: Alles auswählen

import tkinter as tk
from pandas import DataFrame
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

liste_höhe = [1,2,3,4,5,6] #LISTE MUSS GLEICHE LÄNGE HABEN
liste_wahrscheinlichkeit = [0.3,0.5,0.8,0.7,0.4,0.2]           

data2 = {'Wahrscheinlichkeit': liste_wahrscheinlichkeit, 'Höhe': liste_höhe}
df2 = DataFrame(data2,columns=['Wahrscheinlichkeit', 'Höhe'])

root= tk.Tk() 
  
figure2 = plt.Figure(figsize=(5,4), dpi=100)
ax2 = figure2.add_subplot(111)
line2 = FigureCanvasTkAgg(figure2, root)
line2.get_tk_widget().grid(row = 0, column = 0)
df2 = df2[['Wahrscheinlichkeit', 'Höhe']].groupby('Wahrscheinlichkeit').sum()
df2.plot(kind='line', legend=True, ax=ax2, color='r',marker='o', fontsize=10)

root.mainloop()
Hat da zufällig jemand Erfahrung mit und kann mir einen Tipp geben?

Viele Grüße Carlotta

Re: Plot/Graph rotieren

Verfasst: Samstag 12. November 2022, 22:40
von Sirius3
Warum verwendest Du groupby, wo Du doch nur einen Wert pro Gruppe hast?
Du willst eigentlich nur den index setzen, das sortiert auch die Reihenfolge nicht um, was Du ja anscheinend nicht willst:

Code: Alles auswählen

df = DataFrame({'Höhe': liste_höhe, 'Wahrscheinlichkeit': liste_wahrscheinlichkeit})
df = df.set_index("Wahrscheinlichkeit")
df.plot(kind='line', legend=True, color='r',marker='o', fontsize=10)

Re: Plot/Graph rotieren

Verfasst: Freitag 18. November 2022, 10:28
von c.schroeder
@Sirius3
Vielen Dank für die Antwort!
Das hat mein Problem lösen können.