2016-03-25 12 views
2

Ich möchte den Bereich zwischen zwei Intervallen unter einer normalen Kurve, wie der im Beispiel erzeugte, färben/schattieren. 140 oder das Segment über 140.Farbbereich unter der Kurve mit Gitter

library(lattice) 

e4a <- seq(60, 170, length = 10000) 
e4b <- dnorm(e4a, 110, 15) 
xyplot(e4b ~ e4a, 
    type = "l", 
    scales = list(x = list(at = seq(60, 170, 5)), rot = 45), 
    panel = function(x, ...){ 
      panel.xyplot(x, ...) 
      panel.abline(v = c(110, 125, 95, 140, 80, 95), lty = 2) 
    }) 

enter image description here

ich eine wirklich einfache Lösung für die R graphic base system gefunden, aber ich habe keine gleichwertige Lösung für Lattice finden: Ein Intervall könnte 125 sein.

+1

@ Hack-R Das ist Basis Grafiken. –

Antwort

4

panel.polygon existiert:

xyplot(e4b ~ e4a, 
     type = "l", 
     scales = list(x = list(at = seq(60, 170, 5)), rot = 45), 
     panel = function(x,y, ...){ 
      panel.xyplot(x,y, ...) 
      panel.abline(v = c(110, 125, 95, 140, 80, 95), lty = 2) 

      xx <- c(125, x[x>=125 & x<=140], 140) 
      yy <- c(0, y[x>=125 & x<=140], 0) 
      panel.polygon(xx,yy, ..., col='red') 
     }) 

Ein bisschen chaotisch mit immer das Polygon richtig.

Beachten Sie, dass e4a in Ihren Daten sortiert ist. Wenn dies nicht der Fall wäre, müssten Sie diese wahrscheinlich vor der Präsentation unter panel.polygon sortieren.

enter image description here

Verwandte Themen