Frage:
Gestapeltes Barplot
eastafri
2010-12-02 12:09:21 UTC
view on stackexchange narkive permalink

Ich habe einen Datenrahmen, dessen erste Spalte der Name eines Elements und die zweite Spalte die Häufigkeit dieses Elements im Datensatz ist.

  nennt freq1 tomate 72 kartoffel 43 kohl 54 sukuma-wiki 85 terere 20  

Ich hätte gerne eine gestapelte Balkenspalte, die den Anteil der einzelnen darstellt Eintrag in der Tabelle. Wie gehen Sie mit der Färbung des gestapelten Balkens um, wenn über sechzig Einträge angezeigt werden? Was ist der einfachste Weg, dies zu tun?

Eine visuelle Hilfe wäre nützlich, um der Diskussion hinzugefügt zu werden.
Drei antworten:
#1
+13
Chase
2010-12-02 13:26:52 UTC
view on stackexchange narkive permalink

Mit 60 verschiedenen Kategorien fällt es Ihnen möglicherweise schwer, daraus eine effektive Grafik zu machen. Möglicherweise möchten Sie ein reguläres Balkendiagramm betrachten, das in aufsteigender oder absteigender Reihenfolge sortiert ist. Ob dies Zählungen oder Prozentsätze sind oder nicht, liegt bei Ihnen. Vielleicht so etwas:

  Bibliothek (ggplot2) df $ names <-reorder (df $ names, -df $ freq) # Bestellt in aufsteigendes orderqplot (x = names, y = freq, data = df, geom = "bar") + coord_flip ()  

BEARBEITEN:

Um ein gestapeltes Balkendiagramm mit ggplot zu erstellen, haben wir Setzen Sie x = 1 , da wir nur eine Spalte haben. Wir werden das Argument fill verwenden, um Farbe hinzuzufügen:

  qplot (x = Faktor (1), y = freq, data = df, geom = "bar", fill = names)  

Ebenfalls von Interesse: Ein gestapeltes Balkendiagramm ist fast ein Kreisdiagramm. Sie können das Koordinatensystem von ggplot-Diagrammen mit + coord_polar (theta = "y") transformieren, um aus dem obigen gestapelten Balkendiagramm ein Kreisdiagramm zu erstellen.

+1 für die Verwendung von `qplot ()`, aber vielleicht wäre es interessant, auch den anderen Weg (gestapelt) und die Verwendung von Farbe zu zeigen.
#2
+7
chl
2010-12-02 13:35:20 UTC
view on stackexchange narkive permalink

Ich bezweifle, dass Sie eine geeignete Auswahl an verschiedenen Farben mit so vielen Kategorien finden. Hier sind einige Ideen:

  1. Für gestapelte Balkendiagramme benötigen Sie barplot () mit neben = FALSE (dies ist die Standardeinstellung). - Dies ist in Basis R (@ Chases Lösung mit ggplot2 ist auch gut)
  2. Zum Generieren einer Farbrampe können Sie das Paket RColorBrewer verwenden ;; Das von @fRed gezeigte Beispiel kann mit brewer.pal und einer der divergierenden oder sequentiellen Paletten reproduziert werden. Die Anzahl der Farben ist jedoch begrenzt, sodass Sie sie recyceln müssen (z. B. alle 6 Elemente).
  3. ol>

    Hier eine Abbildung:

      Bibliothek (RColorBrewer) x <- sample (LETTERS [1:20], 100, replace = TRUE) Registerkarte <- as.matrix (Tabelle (x)) my.col <- brewer.pal (6, "BrBG") # oder brewer.pal (6, "Blues") Barplot (tab, col = my.col)  

    Es gibt auch das Farbraum -Paket, das eine schöne Begleitung hat Vignette über das Design guter Farbschemata. Lesen Sie auch Ross Ihakas Kurs zum Thema Thema in Computerdatenanalyse und Grafik.

    Eine bessere Möglichkeit, solche Daten anzuzeigen, ist wahrscheinlich die Verwendung eines sogenannten Cleveland-Punktdiagramms, d. H.

     dotchart(tab) 
Cleveland Handlung natürlich!
Ich scheine Punktdiagramme immer zu vergessen, obwohl Tufte überall über ihr überlegenes Daten-Tinten-Verhältnis spricht ... Ich denke, dieser Vorschlag in Kombination mit der Neuordnung der Daten ergibt ein informatives und leicht verdauliches Diagramm. Der Vollständigkeit halber benötigt der Wechsel von Balken zu Punkten in `ggplot2` einfach das` geom = "point" `:` qplot (x = Namen, y = Freq, Daten = df, geom = "Punkt") + coord_flip () `
@Chase Vielen Dank dafür (Ich freue mich auch, dass Sie Ihre Antwort nach meinem Kommentar umgehend aktualisieren). Eine Neuordnung wäre sinnvoll, wenn es keine natürliche Gruppierung zwischen Elementen gibt (was häufig bei gestreiften Fragebögen der Fall ist), aber ich verwende sie auch, weil es sehr praktisch ist, potenzielle Decken- / Bodeneffekte anzuzeigen. Der Punkt ist nun, dass ein gestapeltes Balkendiagramm selten effektive Informationen über binäre Elemente vermittelt (es scheint für geordnete Antwortkategorien wie Elemente vom Typ Likert besser geeignet zu sein), während das Punktdiagramm beide Arten von Elementen verarbeiten kann. Hier ist der begrenzende Faktor die Anzahl der Elemente.
#3
+6
RockScience
2010-12-02 12:27:27 UTC
view on stackexchange narkive permalink

Für die Färbung geben Sie entweder eine Liste von Farben an oder generieren sie.

In letzterem empfehle ich Ihnen, diesen Code auszuführen.

  n = 32; main.name = paste ("Farbpaletten; n =", n) ch.col = c ("Regenbogen (n, Start = .7, Ende = .1)", "Heat.colors (n)", "Terrain .colors (n) "," topo.colors (n) "," cm.colors (n) "); nt <-Länge (ch.col) i <-1: n; j <n / nt; d <-j / 6; dy <-2 * d; Diagramm (i, i + d, Typ = "n", yaxt = "n", xaxt = "n", ylab = "", xlab = "", main = main.name) # yaxt = "n" setze kein y axie label und tick.for (k in 1: nt) {rect (i-.5, (k-1) * j + dy, i + .4, k * j, col = eval (parse (text = ch.col [k])), border = "grey"); text (2,5 * j, k * j + dy / 2, ch.col [k])}  

aus dem Blog http://statisticsr.blogspot.com/2008/07/color-scale-in-r.html

Barplotting sollte durchgeführt werden Barplot

  DF = data.frame (names = c ("Tomate", "Kartoffel", "Kohl", "Sukuma-Wiki", "Terere"), freq = c (7 , 4,5,8,20)) Barplot (as.matrix (DF [, 2]), col = heat.colors (Länge (DF [, 2])), Legende = DF [, 1], xlim = c (0,9), Breite = 2)  
Vielen Dank dafür, aber ich sehe nicht, wie ich es anwenden kann, bevor ich das Diagramm zuerst zeichne
so ähnlich? Dies ist eine einfache Datenvisualisierung. Ich empfehle Ihnen, einige Tutorials zu lesen


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...