Monatsnamen im Plot anzeigen

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
uschmidt
User
Beiträge: 14
Registriert: Sonntag 9. April 2017, 15:00

Hallo. Bei einem Plot würde ich gerne auf der X-Achse die Monatsnamen angezeigt haben. Bisher sieht der Plot wie folgt aus:

https://imgur.com/a/DUCFu

Statt der Nummern sollten da die Monate Apri(4,0), Mai(5,0) und Juni(6,0) stehen. 3,5, 4,5 usw. sollten ausgeblendet sein.

Der Code sieht wie folgt aus:

Code: Alles auswählen

df=pd.read_csv('df.csv', sep=',',index_col=0)

y1 = df.A
y2 = df.B
x = df.index

x_start = 3.5  
x_end = 6.5 
x = np.linspace(x_start, x_end, len(y1))

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(x, y1, '-',c='xkcd:dull blue')
ax1.fill_between(x, 0, y1, alpha=.3)
ax2.plot(x, y2, '-',c='xkcd:red')

ax1.set_ylabel('A', color='xkcd:dull blue')
ax2.set_ylabel('B', color='xkcd:red')

plt.xticks()
plt.show()
Kann mir jemand helfen? Danke schon mal!!!
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

uschmidt hat geschrieben:Statt der Nummern sollten da die Monate Apri(4,0), Mai(5,0) und Juni(6,0) stehen. 3,5, 4,5 usw. sollten ausgeblendet sein.
Das sollte sich mit xticks lösen lassen. Wie Du das dann mit Deinen Daten machst, musst halt mal schauen, habe jetzt von 0 bis 11 geschrieben, doch 1 bis 12 funktioniert ebenfalls.

Code: Alles auswählen

import matplotlib.pyplot as plt

monate_strings = ["Jan.", "Febr.", "März", "Apr.", "Mai", "Juni",
                  "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez."]

monate_zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
werte = [10, 12, 13, 14, 15, 16, 17, 18, 19, 18, 17, 16]

plt.xticks(monate_zahlen, monate_strings)
plt.plot(monate_zahlen, werte)
plt.xlabel("Monate", color="#ce6600")
plt.ylabel("Werte", color="#ce6600")

plt.savefig("plot-mit-monatsnamen.png")
plt.show()
Bild
uschmidt
User
Beiträge: 14
Registriert: Sonntag 9. April 2017, 15:00

Nice! Das hat geholfen! Besten Dank!
Antworten