2013-05-09 10 views
6

Ich habe manuell einen Datensatz der Lebenserwartung mit begleitenden 95% Konfidenzbändern erstellt. Ich zeichne diese über die Zeitskala, würde aber bevorzugen, dass die Bänder schattiert sind anstatt gestrichelte Linien. Angezeigter Code:Vertrauensintervalle manuell mit ggplot2 überschatten

p1 = ggplot() 
p2 = p1 + geom_line(aes(x=pl$Time, y=pl$menle), colour="blue") 
p3 = p2 + geom_line(aes(x=pl$Time, y=pl$menlelb), colour="blue", lty="dotted") 
p4 = p3 + geom_line(aes(x=pl$Time, y=pl$menleub), colour="blue", lty="dotted") 

Gibt es eine einfache Möglichkeit, das Intervall zu schattieren, anstatt nur die Zeilen zu haben ?? Wenn ich etwas einfaches vermisse, entschuldige ich mich im Voraus, aber ich kann nichts finden, um eine einfache Art zu zeigen, dies zu tun.

+4

Verwenden 'geom_ribbon' statt. – joran

+2

Und bitte geben Sie Daten für andere, um Ihren Code zu versuchen (oder verwenden Sie Daten, die mit R verfügbar sind). – Arun

+1

Wenn du '$' in ggplot verwendest, machst du es wahrscheinlich falsch - auch bekannt als das Sprichwort: "ggplot2 kümmert sich nicht um' $ ', es ernährt sich von' data' ". – baptiste

Antwort

25

Es wäre hilfreich, wenn Sie Ihre eigenen Daten zur Verfügung gestellt haben, aber ich denke, das Folgende macht das, wonach Sie suchen.

Erstellen Sie zunächst einige Dummy-Daten:

##I presume the lb and ub are lower/upper bound 
pl = data.frame(Time = 0:10, menle = rnorm(11)) 
pl$menlelb = pl$menle -1 
pl$menleub = pl$menle +1 

Dann den Plot erstellen. Der schattierte Bereich wird erstellt mit geom_ribbon:

ggplot(pl, aes(Time)) + 
    geom_line(aes(y=menle), colour="blue") + 
    geom_ribbon(aes(ymin=menlelb, ymax=menleub), alpha=0.2) 

enter image description here

+0

Wenn ich zwei oder mehrere Sätze von geom_line (...) + geom_ribbon (...) für dasselbe x, aber unterschiedliche y, ymin, ymax, plotte, wie kann ich eine Legende/ein Label hinzufügen? – jf328