2017-03-22 9 views
0

Ich sah einige Antworten für meine Frage in einer aktuellen Suche, aber keiner von ihnen funktionierte für mich.Jitter-Plot mit ggplot mit Durchschnittslinie für jede Gruppe

Ich möchte eine geom_jitter() dividieren von 3 Gruppen und fügen Sie die durchschnittliche Linie für jede Gruppe. Bisher habe ich folgenden Code. Aber es ist immer noch nicht gut.

library(ggplot2) 
data("iris") 

iris.summary <- aggregate(. ~ Species, mean, data=iris) 

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) + 
    geom_jitter(width=0.2) + geom_hline(data=iris.summary, size=1, 
    col="red", aes(yintercept=Sepal.Width)) 

, die die folgende Grafik produziert: enter image description here

Wie kann ich an den Rand der Punkte, die roten Linien eingestellt?

Vielen Dank im Voraus,

Rhenan Bartels

Antwort

5

Sie ein wenig Hack mit geom_crossbar() wie dies tun könnte:

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) + 
    geom_jitter(width=0.2) + 
    geom_crossbar(data=iris.summary, aes(ymin = Sepal.Width, ymax = Sepal.Width), 
        size=1,col="red", width = .5) 

Sie würden mit dem width = ... spielen müssen es nur richtig, aber das ist knapp. enter image description here

nicht direkt relevant, aber ich bekomme eine Menge Kilometer von stat_summary() und denke, dass es die Daten zeigt, ein wenig besser zu:

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) + 
    geom_jitter(width=0.2) + 
    stat_summary(fun.data = mean_cl_normal, geom = "crossbar", 
       width = .5, color = "red") 
Verwandte Themen