Plot/Graph rotieren

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
c.schroeder
User
Beiträge: 11
Registriert: Montag 18. Oktober 2021, 15:22

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
Sirius3
User
Beiträge: 18276
Registriert: Sonntag 21. Oktober 2012, 17:20

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)
c.schroeder
User
Beiträge: 11
Registriert: Montag 18. Oktober 2021, 15:22

@Sirius3
Vielen Dank für die Antwort!
Das hat mein Problem lösen können.
Antworten