2015-01-16 11 views
7

Gibt es eine bequeme Möglichkeit, Punkte nur zu verbinden, wenn die Verbindung eine positive Steigung hat? (Sonst sollte die Funktion verhält sich genau wie xyplot (...))Gitter, Verbindungspunkte nur, wenn die Verbindung eine positive Steigung hat

library(lattice) 

dat <- data.frame(x=1:10,y=sample(1:10)) 

xyplot(y ~ x, data=dat, 
     panel = function(x, y,...) { 
     panel.xyplot(x, y, type="o",...) 
     } 
) 

so das Ergebnis shoud ein Grundstück so sein, aber ohne gekreuzte Linien:

enter image description here

Danke Christof

+0

Während Rolands Lösung sehr gut ist, muss ich fragen, ob dies der beste Weg ist, um Ihre Nachricht an Ihren Leser zu bringen. Können Sie erklären, warum Sie überhaupt Linien anzeigen möchten? Die Standardregel besteht darin, Punkte nur für experimentelle Daten zu zeichnen. Ich würde vorschlagen, anstelle von Linien jede Instanz zu identifizieren, wo "y [j]> y [j-1]" und diese Punkte in einer anderen Farbe darstellt, um die "ankommende" Steigung anzuzeigen. –

Antwort

7
dat <- dat[order(dat[, "x"]),] 
dat$group <- cumsum(c(1, diff(dat$y) < 0)) 


xyplot(y ~ x, data = dat, groups = group, 
     panel = function(x, y,...) { 
     panel.xyplot(x, y, type = "o", col = trellis.par.get("plot.line")$col, ...) 
     } 
) 

resulting plot

+0

brilliant, vielen Dank. Ich versuche herauszufinden, ob ich eine ähnliche Lösung verwenden kann, wenn es einen zusätzlichen Gruppierungsfaktor gibt. – ckluss

Verwandte Themen