automatisches Verzerren von Balkendiagramm

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
G-Rizzle
User
Beiträge: 90
Registriert: Donnerstag 18. Februar 2021, 12:26

Hallo,

ich möchte eine Häufigkeitsverteilung mithilfe einer Balkendiagramms in Matplotlib darstellen.

Code: Alles auswählen

y_werte = dxdx_haeufigkeiten
x_werte = list(range(0, len(y_werte)))
x_label = [str(dxdx_werte[i]) for i in range(0, len(x_werte))]


fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
ax.bar(x_werte, y_werte)
#plt.xticks(y_werte, x_label, rotation = 90)           
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('titel')
fig.show()

führt zu folgendem Ergebnis:
Bild


Ändere ich nun die Beschriftung der Balken:

Code: Alles auswählen

y_werte = dxdx_haeufigkeiten
x_werte = list(range(0, len(y_werte)))
x_label = [str(dxdx_werte[i]) for i in range(0, len(x_werte))]


fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
ax.bar(x_werte, y_werte)
plt.xticks(y_werte, x_label, rotation = 90)           
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('titel')
fig.show()

verzerrt sich das ganze Diagramm bis ins unleserliche.


Bild



Wieso ist das so (da die Beschriftungen ja Strings sind) und wie kann ich das umgehen? Ich möchte einfach eine Darstellung mit ebenso linearen Abständen
Benutzeravatar
__blackjack__
User
Beiträge: 13182
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@G-Rizzle: Du positionierst die X-Label an Positionen die durch die Y-Werte beschrieben werden. Das macht halt keinen Sinn. Die X-Label sollen ja an die Positionen der X-Werte angezeigt werden.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
G-Rizzle
User
Beiträge: 90
Registriert: Donnerstag 18. Februar 2021, 12:26

aber die zugrundeliegenden Positionen, an denen die y-werte beschrieben wurden haben sich doch nicht verändert? die sind weiterhin die Zahlenreihe

Code: Alles auswählen

list(range(0, len(y_werte)))
die Beschriftungen müssten doch an genau den gleichen Stellen wie die beschriebenen y-Werte erscheinen?

gibt es sonst eine Möglichkeit das gleichmäßig plotten zu lassen?
Benutzeravatar
__blackjack__
User
Beiträge: 13182
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@G-Rizzle: Was denkst Du denn was `y_werte` beim `plt.xticks()`-Aufruf für eine Bedeutung hat? Das sind die Positionen auf der X-Achse. Dafür nimmst Du die Y-Werte. Ist halt falsch.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Antworten