2015-01-16 22 views
7

c'è un modo comodo per collegare i punti solo se la connessione ha una pendenza positiva? (Altrimenti la funzione dovrebbe comportarsi esattamente come xyplot (...))reticolo, collegare i punti solo se la connessione ha una pendenza positiva

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",...) 
     } 
) 

modo che il risultato shoud essere una trama del genere, ma senza linee incrociate:

enter image description here

Grazie Christof

+0

Mentre la soluzione di Roland è molto buona, devo chiedermi se questo è il modo migliore per trasmettere il tuo messaggio al tuo lettore. Puoi spiegare ** perché ** vuoi mostrare qualche riga? La regola standard è di tracciare i punti solo per i dati sperimentali. Suggerirei, invece di linee, identificare ogni istanza dove 'y [j]> y [j-1]' e tracciare quei punti in un colore diverso per indicare la pendenza "in entrata". –

risposta

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

geniale, grazie mille. Cerco di scoprire se posso usare una soluzione simile se c'è un fattore di raggruppamento aggiuntivo. – ckluss