Definition: Säulendiagramm

Ein Säulendiagramm (en. Bar Chart), ist ein Diagrammtyp, der verwendet wird, um Daten durch rechteckige Balken (Säulen) zu visualisieren.

Dabei eignen sich Säulendiagramme besonders gut, zur Darstellung absoluter Wertunterschiede1.

Jeder Balken repräsentiert eine Kategorie von Daten, und die Höhe der Balken ist proportional zu dem Wert, den sie darstellen.

  • Regeln:
    • die Säulen müssen bei Null beginnen.

    • Säulendiagramme sind gut für Daten mit kurzen Bezeichnern, geringer Variation und nur wenigen negativen Werten geeignet.

    • Balkendiagramme sind gut für Daten mit längeren Bezeichnern, hoher Variation und negativen Werten geeignet.

Anmerkung

Lügen mit Säulendiagramme

Startet der Wertebereich nicht bei Null, so ist es sehr leicht, mit Säulendiagrammen zu lügen.

Die folgende Grafik stellt eine Gehaltserhöhung so dar, als würde das Gehalt verdoppelt. Tatsächlich ist es aber nur eine Erhöhung um 26%.

1

Einfacher Count-Plot mit Seaborn

In Python erhalten wir einen Säulendiagramm-Count Plot durch

df_kueche_marketing = df[
    (df["abteilung"] == "Kueche") | (df["abteilung"] == "Marketing")
]
 
ax = sns.countplot(
    df_großes_interesse,
    x="abteilung",
    hue="interesse",
)
 
ax.legend(labels=["Kein Interesse", "Interesse"])
 
ax.set_xlabel("Abteilung")
ax.set_ylabel("Anzahl Interessenten")
ax.set_title("Interesse an Fortbildung")
 
fig = ax.get_figure()
fig.set_dpi(150)
plt.show()

Säulendiagramm mit Seaborn

In Python erhalten wir ein Säulendiagramm durch

df_kueche_marketing = df[
    (df["abteilung"] == "Kueche") | (df["abteilung"] == "Marketing")
]
 
ax = sns.barplot(
    data=df_kueche_marketing,
    x="abteilung",
    y="interesse",
    estimator="sum",
    errorbar=None,
)
 
 
ax.set_xlabel("Abteilung")
ax.set_ylabel("Anzahl Interessenten")
ax.set_title("Interesse an Fortbildung")
 
fig = ax.get_figure()
fig.set_dpi(150)
plt.show()

Balkendiagramm mit Seaborn

Das zugehörige Balkendiagramm erhalten wir, indem wir x und y tauschen, also

ax = sns.barplot(
    data=df_kueche_marketing,
    y="abteilung",
    x="interesse",
    estimator="sum",
    errorbar=None,
)

Aufsteigende oder absteigende Sortierung

Wenn wir die Daten auf- oder absteigend sortieren wollen, können wir den order-Parameter nutzen:

ax = sns.barplot(
    data=df_kueche_marketing,
    x="abteilung",
    ...
    order=df_kueche_marketing["abteilung"].value_counts().index
)

beziehungsweise

ax = sns.barplot(
    df,
    x="Stadtteil",
    y="Interesse",
    order=df.groupby("Stadtteil")["Interesse"]
    .mean()
    .sort_values(ascending=False)
    .index,
)

Fehlende Ticks

Fehlen in einem Plot Ticks, so kann

  • entweder die Größe des Plots mit bspw. plt.ylim(0, 3.25) erhöht werden
  • oder es können “Zwischenticks” mit plt.minorticks_on() (oder ax.minorticks_on()) hinzugefügt werden.

An einem Beispiel:

ax = sns.barplot(data=df_kueche_marketing, y="tage", x="abteilung", errorbar=None)
 
ax.minorticks_on()
ax.set_xlabel("Abteilung")
ax.set_ylabel("Anzahl Interessenten")
ax.set_title("Interesse an Fortbildung")
 
fig = ax.get_figure()
fig.set_dpi(150)
plt.ylim(0, 3.25)
plt.show()

Footnotes

  1. Während Liniendiagramme sich besonders gut für die Darstellung von Änderungsraten eignen. 2