Suche…


Bemerkungen

ggplot2 hat eine eigene perfekte Referenz-Website http://ggplot2.tidyverse.org/ .

In den meisten data.frame ist es zweckmäßiger, die Struktur oder den Inhalt der aufgezeichneten Daten (z. B. eines data.frame ) anzupassen, als nachträglich data.frame in der data.frame anzupassen.

RStudio veröffentlicht ein sehr hilfreiches "Data Visualization with ggplot2" Cheatsheet, das Sie hier finden können .

Streudiagramme

Wir zeichnen ein einfaches Streudiagramm mit dem integrierten Iris-Datensatz wie folgt:

library(ggplot2)
ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + 
  geom_point()

Das gibt: Beispiel eines Streudiagramms mit einem Iris-Dataset

Mehrere Plots anzeigen

Zeigen Sie mehrere Darstellungen in einem Bild mit den verschiedenen facet . Ein Vorteil dieser Methode besteht darin, dass alle Achsen die gleiche Skalierung über Diagramme hinweg haben, so dass sie auf einen Blick leicht zu vergleichen sind. Wir verwenden den in ggplot2 enthaltenen mpg Datensatz.

Diagramme Zeile für Zeile umbrechen (versucht, ein quadratisches Layout zu erstellen):

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_wrap(~class)

Mehrere Diagramme in einer Zeile und in mehreren Spalten anzeigen:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(.~class)

Mehrere Diagramme in einer Spalte, in mehreren Zeilen anzeigen:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(class~.)

Zeigen Sie mehrere Diagramme in einem Raster mit zwei Variablen an:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(trans~class) #"row" parameter, then "column" parameter

Bereiten Sie Ihre Daten für das Plotten vor

ggplot2 funktioniert am besten mit einem langen ggplot2 . Die folgenden Beispieldaten, die die Preise für Süßigkeiten an 20 verschiedenen Tagen darstellen, werden in einem als breit bezeichneten Format dargestellt, da jede Kategorie eine Spalte enthält.

set.seed(47)
sweetsWide <- data.frame(date      = 1:20,
                         chocolate = runif(20, min = 2, max = 4),
                         iceCream  = runif(20, min = 0.5, max = 1),
                         candy     = runif(20, min = 1, max = 3))

head(sweetsWide)
##   date chocolate  iceCream    candy
## 1    1  3.953924 0.5890727 1.117311
## 2    2  2.747832 0.7783982 1.740851
## 3    3  3.523004 0.7578975 2.196754
## 4    4  3.644983 0.5667152 2.875028
## 5    5  3.147089 0.8446417 1.733543
## 6    6  3.382825 0.6900125 1.405674

Für die Konvertierung von sweetsWide in das lange Format für die Verwendung mit ggplot2 können mehrere nützliche Funktionen von Basis R und die Pakete reshape2 , data.table und tidyr (in chronologischer Reihenfolge) verwendet werden:

# reshape from base R
sweetsLong <- reshape(sweetsWide, idvar = 'date', direction = 'long', 
                      varying = list(2:4), new.row.names = NULL, times = names(sweetsWide)[-1])

# melt from 'reshape2'
library(reshape2)
sweetsLong <- melt(sweetsWide, id.vars = 'date')

# melt from 'data.table'
# which is an optimized & extended version of 'melt' from 'reshape2'
library(data.table)
sweetsLong <- melt(setDT(sweetsWide), id.vars = 'date')

# gather from 'tidyr'
library(tidyr)
sweetsLong <- gather(sweetsWide, sweet, price, chocolate:candy)

Alle ergeben ein ähnliches Ergebnis:

head(sweetsLong)
##   date     sweet    price
## 1    1 chocolate 3.953924
## 2    2 chocolate 2.747832
## 3    3 chocolate 3.523004
## 4    4 chocolate 3.644983
## 5    5 chocolate 3.147089
## 6    6 chocolate 3.382825

Weitere Informationen zum Konvertieren von Daten zwischen langen und breiten Formaten finden Sie unter Umformen von Daten zwischen langen und breiten Formularen .

Das Ergebnis von sweetsLong enthält eine sweetsLong und eine Spalte, in der die Süßigkeit beschrieben wird. Nun ist das Plotten viel einfacher:

library(ggplot2)
ggplot(sweetsLong, aes(x = date, y = price, colour = sweet)) + geom_line()

Liniendiagramm von Süßigkeiten

Fügen Sie dem Plot horizontale und vertikale Linien hinzu

Fügen Sie für alle kategorialen Variablen eine gemeinsame horizontale Linie hinzu

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_hline(aes(yintercept=5), colour="#990000", linetype="dashed")

plot1

Fügen Sie für jede kategoriale Variable eine horizontale Linie hinzu

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

# add horizontal levels for drawing lines
df$hval <- df$y + 2

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), colour="#990000", width=0.75)

plot2

Horizontale Linie über gruppierten Balken hinzufügen

# sample data
df <- data.frame(x = rep(c('A', 'B'), times=2), 
             group = rep(c('G1', 'G2'), each=2), 
             y = c(3, 4, 5, 6), 
             hval = c(5, 6, 7, 8))

p1 <- ggplot(df, aes(x=x, y=y, fill=group)) 
        + geom_bar(position="dodge", stat="identity")

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), 
               colour="#990000", 
               position = "dodge", 
               linetype = "dashed")

plot3

Vertikale Linie hinzufügen

# sample data
df <- data.frame(group=rep(c('A', 'B'), each=20), 
                 x = rnorm(40, 5, 2), 
                 y = rnorm(40, 10, 2))

p1 <-  ggplot(df, aes(x=x, y=y, colour=group)) + geom_point()

p1 + geom_vline(aes(xintercept=5), color="#990000", linetype="dashed")

Geben Sie hier die Bildbeschreibung ein

Vertikales und horizontales Balkendiagramm

ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")

Geben Sie hier die Bildbeschreibung ein

Es ist möglich, ein horizontales Balkendiagramm zu erhalten, indem einfach coord_flip () - Ästhetik zum ggplot-Objekt hinzugefügt wird:

  ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")+
  coord_flip()

Geben Sie hier die Bildbeschreibung ein

Geigenhandlung

Violinendiagramme sind Kerndichteschätzungen, die in der vertikalen Ebene gespiegelt sind. Sie können verwendet werden, um mehrere Distributionen nebeneinander zu visualisieren. Die Spiegelung hilft dabei, Unterschiede hervorzuheben.

ggplot(diamonds, aes(cut, price)) +
  geom_violin()

Grundlegende Geigenhandlung

Violin-Plots werden nach ihrer Ähnlichkeit mit dem Musikinstrument benannt. Dies ist besonders sichtbar, wenn sie mit einem überlagerten Boxplot gekoppelt sind. Diese Visualisierung beschreibt dann die zugrunde liegenden Verteilungen, sowohl in Bezug auf Tukeys 5-Zahlen-Zusammenfassung (als Boxplots) als auch auf die Schätzung der vollen kontinuierlichen Dichte (Violinen).

ggplot(diamonds, aes(cut, price)) +
  geom_violin() +
  geom_boxplot(width = .1, fill = "black", outlier.shape = NA) +
  stat_summary(fun.y = "median", geom = "point", col = "white")

Geigenhandlung mit Boxplot

Erstellen Sie grundlegende Diagramme mit qplot

qplot soll der base r plot() Funktion ähneln und versucht, Ihre Daten immer darzustellen, ohne zu viele Angaben zu machen.

grundlegendes qplot

qplot(x = disp, y = mpg, data = mtcars)

Geben Sie hier die Bildbeschreibung ein

Farben hinzufügen

qplot(x = disp, y = mpg, colour = cyl,data = mtcars)

Geben Sie hier die Bildbeschreibung ein

ein glatter hinzufügen

qplot(x = disp, y = mpg, geom = c("point", "smooth"), data = mtcars)

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow