ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
codecook
Beiträge: 4
Registriert: Sa Nov 20, 2021 11:16 am

ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von codecook »

Hallo, liebe Forengemeinde! (:

Ich bin ganz neu hier im Forum und arbeite auch erst seit zwei Wochen mit R (: Deshalb hoffe ich, dass ich keine all zu blöden oder redundanten Fragen stelle. Habe mich aber schon viele Stunden in R eingearbeitet und programmiere gerade mein erstes Projekt, wofür ich eure Hilfe benötige (:

Verwendete Packages:
  • ggplot2
  • reshape2
Die Daten und die wissenschaftliche Problemstellung
Ich arbeite mit einem Datensatz, der Metadaten zu Artikeln einer Zeitschrift enthält. Ich möchte anhand von ggplot2 ein geschichtetes (oder gestapeltes) Balkendiagramm erstellen, das über alle Ausgaben der Zeitschrift hinweg (x-Achse: Heftnummer) den prozentualen Anteil verschiedener Rubriken (im Sinne der Anzahl der Artikel in der Rubrik) darstellt. Alle Beobachtungen (also alle Zeitschriften-Artikel) wurden vor dem Plotten jeweils einer Rubrik (z.B. Sport) zugewiesen. Anschließend habe ich Dummies für jede Rubrik erstellt. Indem ich den Datensatz anhand der Heftnummer gruppiert habe, konnte ich die absoluten Häufigkeiten der Artikel einer Rubrik pro Heft zählen, sowie den prozentualen Anteil der Rubrik pro Heft berechnen, indem ich die absolute Anzahl durch die Gesamtzahl an Artikeln im Heft geteilt und mit 100 multipliziert habe.

Das Plotten
Anschließend habe ich die Daten anhand des Packages "reshape2" ins Long-Format überführt und mithilfe von "ggplot2" geplottet. Das Ergebnis ist ein auf den ersten Blick echt hübsches Balkendiagramm, das den prozentualen Anteil aller Rubriken über alle Zeitschriftenausgaben hinweg darstellt. Die Balken reichen auf der y-Achse in jedem Falle genau zum Wert 100, da ja alle Prozentwerte addiert stets 100 ergeben.

Mein Problem ist nun: Da ich 30 Rubriken kodiert habe, werden diese 30 Rubriken anhand von 30 verschiedenen Farben dargestellt. Die Farben sind sich teilweise so ähnlich, dass man sie kaum voneinander unterscheiden kann. Ich frage mich, ob ich die Farben z.B. durch einprägsame, sehr unterschiedliche Muster ersetzen kann, so dass man leichter über die Legende ablesen kann, welche Farbe bzw. welches Muster nun welche Rubrik darstellt. Seht euch das Diagramm doch mal an ;) Ja, ich weiß: Die Variablenbezeichnungen sind noch etwas kryptisch, aber das sind Formalia um die ich mich zum Schluss kümmere (: Habt ihr eine Idee, wie ich das auf einfache Art und Weise übersichtlicher gestalten kann?

Damit ihr mich besser verstehen und das Problem nachvollziehen könnt, anbei ein paar Code-Abschnitte, Table-Outputs und der Plot, um den es geht (:

Vielen Dank im voraus!!! ;) ;) ;) :D :D :D :) :) :) :mrgreen: :mrgreen: :mrgreen:

Die aufbereitete Input-Tabelle habe mittels reshape::melt() ins Long-Format transformiert:

Code: Alles auswählen

df10_adjusted_rates3_long <- melt(df10_adjusted_rates3, id = "Heftnr.")
auszug_aus_long_table.png

Hier der Code, wie ich das dann geplottet habe:

Code: Alles auswählen

# Basics 
Ch01_balken_adj <- ggplot(data=df10_adjusted_rates3_long,
                      aes(x = factor(Heftnr.),
                          y = value,
                          fill = variable)) +
    geom_col()
Ch01_balken_adj

# Achsenbeschriftung
Ch01_balken2_adj <- Ch01_balken_adj + xlab("Heftnummer") + ylab("Prozentualer Anteil der Themen an der Gesamtzahl an Artikeln pro Ausgabe")
Ch01_balken2_adj
Dateianhänge
wirres_bd.png
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von bigben »

Hallo codecook,

Schraffuren sind nicht unbedingt die prominente Stärke von ggplot2. Vielleicht wäre es ganz gut, wenn Du Beispieldaten (müsse keine echten Daten sein) anstelle eines Screenshots von Daten posten könntest, siehe dazu http://forum.r-statistik.de/viewtopic.php?t=11 und https://vm.tiktok.com/ZM88e2rv7/

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von bigben »

Ein anderer möglicherweise nützlicher Verweis könnte der auf das Paket ggpattern sein: https://coolbutuseless.github.io/package/ggpattern/
Eigene Erfahrungen habe ich damit keine.
LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von Athomas »

Habt ihr eine Idee, wie ich das auf einfache Art und Weise übersichtlicher gestalten kann?
Ja: zuallererst von der Idee, das Ganze als "gestapeltes Balkendiagramm" darzustellen, verabschieden.
Egal, wie Du Deine 30 Kategorien einfärbst/schraffierst - es bleibt eine Verhohnepipelung der menschlichen Wahrnehmung :) !
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von EDi »

Egal, wie Du Deine 30 Kategorien einfärbst/schraffierst - es bleibt eine Verhohnepipelung der menschlichen Wahrnehmung :) !
Nach oben
Jupp, sehe ich genauso. Das können wir nicht verarbeiten.
Wie wäre es mit facets?
Z.b. für jede variable eines, x das Heft, y Anteil und dann als Liniendiagramm?
Oder für jedes Heft facets machen und auf x die variable legen?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Hufeisen
Beiträge: 162
Registriert: Fr Aug 31, 2018 6:34 pm

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von Hufeisen »

Die Idee mit dem gestapelten Balkendiagramm ist eigentlich ganz nett. Wie wäre es, wenn du die üblichen Kategorien der Magazingestaltung für die bereits vorgeschlagenen Facetten nutzt? Ich rate jetzt mal anhand deiner Beschriftungen: Politik und Gesellschaft, Kunst und Kultur, Reisen und Freizeit (usw. wie es eben passt). Ich denke, das würde eine übersichtliche Darstellung ergeben, denn zu viele panel sind auch nicht sonderlich übersichtlich.
codecook
Beiträge: 4
Registriert: Sa Nov 20, 2021 11:16 am

Re: ggplot2: Gestapeltes Balkendiagramm lesbarer machen

Beitrag von codecook »

Entschuldigt bitte, dass ich nicht mehr geantwortet habe. Das Balkendiagramm habe ich für eine Freundin designt und irgendwann hat sie selbst an der Arbeit aufgehört zu arbeiten. Seitdem hat sich die Sache erledigt. Eure Hilfe war trotzdem super!

Viele Grüße!
Antworten