In base a questa grande domanda: How to draw a smooth curve passing through some pointsDisegnare una spline quadratica attraverso punti in lattice
come si potrebbe fare questo in lattice?
plot(rnorm(120), rnorm(120), col="darkblue", pch=16, xlim=c(-3,3), ylim=c(-4,4))
points(rnorm(120,-1,1), rnorm(120,2,1), col="darkred", pch=16)
points(c(-1,-1.5,-3), c(4,2,0), pch=3, cex=3)
xspline(c(-1,-1.5,-3), c(4,2,0), shape = -1)
Ecco dati simili, formattati in modo più appropriato per un lattice
trama:
dat <- data.frame(x=c(rnorm(120), rnorm(120,-1,1)),
y=c(rnorm(120), rnorm(120,2,1)),
l=factor(rep(c('B','R'),each=120))
)
spl <- data.frame(x=c(-1,-1.5,-3),
y=c(4,2,0)
)
Ed ecco ciò che la questione legata dato, tradotto in lattice
:
xyplot(y ~ x,
data=dat,
groups=l,
col=c("darkblue", "darkred"),
pch=16,
panel = function(x, y, ...) {
panel.xyplot(x=spl$x, y=spl$y, pch=3, cex=3)
## panel.spline(x=spl$x, y=spl$y) ## Gives an error, need at least four 'x' values
panel.superpose(x, y, ...,
panel.groups = function(x, y, ...) {
panel.xyplot(x, y, ...)
}
)
},
xlim=c(-3,3), ylim=c(-4,4)
)
Questa domanda sta producendo alcune grandi risposte. Una delle cose più complicate nel plottaggio del "reticolo" è come si annota correttamente i grafici esistenti. Ci sono una varietà di tecniche che possono essere applicate all'interno della funzione originale o alle funzioni eccessivamente esistenti. –
Se si adotta o meno l'implementazione specifica nella mia risposta di seguito, ['grid.xspline()'] (http://stat.ethz.ch/R-manual/R-patched/library/grid/html/grid .xspline.html) probabilmente sarà utile ... –
@ JoshO'Brien Infatti, 'grid.xspline()' funziona anche per il semplice codice 'lattice'. –