x und y Achsen von Graph beschriften

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
Dvdscot
User
Beiträge: 10
Registriert: Donnerstag 27. April 2023, 11:46

Ich möchte Wochentag unter beide Graphen schreiben und auf der y Achse soll "Anzahl der Fahrten" stehen, wird aber gar nicht angezeigt.
Sind zwei verschiedene ganz normale Datensätze.

Code: Alles auswählen

pickup_all = pd.crosstab(index=df.loc[:, 'pickup_weekday'], columns='count')
#print('All')
pickup_all.columns = ['Anzahl Alle']
#print(pickup_all)

ratio_all = pickup_all.loc[:,'Anzahl Alle'] / len(df)
ratio_all.index = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
#print(ratio_all)

pickup_jfk = pd.crosstab(index=jfk_only.loc[:, 'pickup_weekday'], columns='count')
#print('JFK')
pickup_jfk.columns = ['Anzahl JFK']
#print(pickup_jfk)

ratio_jfk = pickup_jfk.loc[:,'Anzahl JFK'] / len(jfk_only)
ratio_jfk.index = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
#print(ratio_jfk)

fig, ax = plt.subplots(figsize=(16,4), ncols=2)

ratio_all.plot(kind = 'bar', ax=ax[0], title = 'Anteile der Wochentage an den Gesamtfahrten');
ratio_jfk.plot(kind = 'bar', ax=ax[1], sharey = 'True', title = 'Anteile der Wochentage an den Flughafenfahrten');

ax[0].set_ylim(0, 0.21)
ax[0].xaxis.set_tick_params(labelrotation = 0)
ax[1].xaxis.set_tick_params(labelrotation = 0)

plt.xlabel('Wochentag', size = 16)
plt.ylabel('Anzahl der Fahrten', size = 10)
Bild
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Dvdscot: `plt`-Funktionen beziehen sich in der Regel auf den letzten Plot. Darum steht das „Wochentag“ nur unter dem. Und die Y-Beschriftung wird nicht angezeigt, weil die beiden Plots sich die Achse teilen und die Beschriftung ganz links, also beim anderen Plot ist. Du musst die `ax`-Objekte einzeln beschriften, so wie Du das mit den Tick-Parametern ja auch schon getan hast.

Wobei ich das Wochentag nicht nur dort weglassen würde, sondern auch in den Titeln. Das es Wochentage sind, sollte an der Beschriftung der einzelnen Balken deutlich genug sein. Und „Anzahl der Fahrten“ ist Inhaltlich fragwürdig, weil das ja gebrochene Zahlen unter 1 sind. Da würde ja heissen das man da Sachen ablesen kann wie „Montag betrug die Anzahl der Fahrten 0,15“. Das macht keinen Sinn.

Das setzen der Y-Begrenzungen würde ich mir auch sparen. Oder zumindest in irgendeiner Weise von den tatsächlichen Daten abhängig machen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Dvdscot
User
Beiträge: 10
Registriert: Donnerstag 27. April 2023, 11:46

Danke, das hab ich mir schon gedacht, wie sieht die Lösung in Code aus?
ax[0].xlabel hat nicht funktioniert. Oder gleich schon beim erstellen des plots in der Klammer?

plt is matplotlib.pyplot.

Ich will der Vorlage möglichst nahe kommen, daher mache ich es so.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Man kann auch nur Methoden benutzen, die auch existieren:

Code: Alles auswählen

ax[0].xaxis.set_label_text
Dvdscot
User
Beiträge: 10
Registriert: Donnerstag 27. April 2023, 11:46

Geht das mit Grids genauso? Also ax[0].grid...

Mit seaborn bekommt man sowieso ein Grid überall.
Antworten