Читать книгу R für Data Science - Hadley Wickham - Страница 42

Positionsanpassungen

Оглавление

Es gibt noch ein magisches Element, das Balkendiagrammen zugeordnet ist. Wenn Sie ein Balkendiagramm färben möchten, können Sie das entweder mit der visuellen Eigenschaft color tun oder, was nützlicher ist, mit fill:

ggplot(data = diamonds) +

geom_bar(mapping = aes(x = cut, color = cut))

ggplot(data = diamonds) +

geom_bar(mapping = aes(x = cut, fill = cut))


Beachten Sie, was passiert, wenn Sie die visuelle Eigenschaft fill auf eine andere Variable wie zum Beispiel clarity abbilden: Die Balken werden automatisch gestapelt. Jedes gefärbte Rechteck stellt eine Kombination von cut und clarity dar:

ggplot(data = diamonds) +

geom_bar(mapping = aes(x = cut, fill = clarity))


Das Stapeln geschieht automatisch durch die Positionsanpassung, die Sie mit dem Argument position spezifizieren. Wenn Sie kein gestapeltes Balkendiagramm haben möchten, können Sie eine von weiteren Optionen verwenden: "identity", "dodge" oder "fill":

 position = "identity" platziert jedes Objekt genau dort, wo es in den Kontext der Grafik fällt. Bei Balken ist das nicht sehr sinnvoll, weil eine Überlappung auftritt. Um diese Überlappung zu sehen, machen wir die Balken etwas transparent (mit einem kleinen Wert für alpha) oder vollkommen transparent (mit fill = NA):

ggplot(

data = diamonds,

mapping = aes(x = cut, fill = clarity)

) +

geom_bar(alpha = 1/5, position = "identity")

ggplot(

data = diamonds,

mapping = aes(x = cut, color = clarity)

) +

geom_bar(fill = NA, position = "identity")

Die Positionsanpassung identity ist nützlicher für 2-D-geoms, wie zum Beispiel Punkte, bei denen sie die Standardeinstellung ist.

 position = "fill" funktioniert wie Stapeln, bringt aber jeden Satz von gestapelten Balken auf dieselbe Höhe. Dadurch ist es einfacher, Proportionen über Gruppen hinweg zu vergleichen:

ggplot(data = diamonds) +

geom_bar(

mapping = aes(x = cut, fill = clarity),

position = "fill"

)


 position = "dodge" platziert überlappende Objekte direkt nebeneinander. Dadurch lassen sich einzelne Werte besser vergleichen:

ggplot(data = diamonds) +

geom_bar(

mapping = aes(x = cut, fill = clarity),

position = "dodge"

)


Es gibt noch einen anderen Typ der Anpassung, der zwar für Balkendiagramme nicht geeignet ist, aber für Streudiagramme sehr nützlich sein kann. Sehen Sie sich noch einmal unser erstes Streudiagramm an. Haben Sie bemerkt, dass das Diagramm nur 126 Punkte anzeigt, obwohl es 234 Beobachtungen im Datenset gibt?


Die Werte von hwy und displ werden gerundet, sodass die Punkte auf einem Gitter erscheinen und viele Punkte einander überlappen. Dieses Problem ist als Overplotting bekannt. Durch diese Anordnung lässt sich kaum erkennen, wo der Schwerpunkt der Daten liegt. Sind die Datenpunkte gleichmäßig über die Grafik verteilt oder gibt es eine spezielle Kombination von hwy und displ, die 109 Werte enthält?

Diese Gitterbildung lässt sich vermeiden, wenn man die Positionsanpassung auf "jitter" setzt. Die Einstellung position = "jitter" fügt jedem Punkt ein geringes Zufallsrauschen hinzu. Dadurch breiten sich die Punkte etwas aus, weil es unwahrscheinlich ist, dass zwei Punkte den gleichen Betrag an zufälligem Rauschen hinzubekommen:

ggplot(data = mpg) +

geom_point(

mapping = aes(x = displ, y = hwy),

position = "jitter"

)


Es mag seltsam erscheinen, mit hinzugefügten zufälligen Beträgen das Diagramm zu verbessern. Doch während die Grafik dadurch im kleinen Maßstab ungenauer wird, offenbart sie im großen Maßstab mehr Informationen. Da dies eine nützliche Operation ist, bringt ggplot2 eine Kurzschreibweise für geom_point(position = "jitter") mit: geom_jitter().

Um mehr über eine Positionsanpassung zu lernen, sehen Sie sich die Hilfeseite der jeweiligen Anpassung an: ?position_dodge, ?position_fill, ?position_identity, ?position_jitter und ?position_stack.

R für Data Science

Подняться наверх