Modérateur : Groupe des modérateurs
Code : Tout sélectionner
test <- data.frame(y = rnorm(100),
x = rep(1:25, 4),
g = rep(letters[1:4], each = 25))
library(lattice)
xyplot(y ~ x, groups = g, panel = "panel.superpose", type = "l", data = test)
Code : Tout sélectionner
test <- data.frame(y = rnorm(100),
x = rep(1:25, 4),
g = rep(letters[1:4], each = 25))
library(lattice)
xyplot(y ~ x, groups = g, panel = "panel.superpose", type = "l", data = test)
Code : Tout sélectionner
test <- data.frame(y = rnorm(100),
x = rep(1:25, 4),
g = rep(letters[1:4], each = 25))
xyplot(
y ~ x,
groups = g,
data = test,
panel = function(x,y){
panel.xyplot(x, y, type = "l")
panel.abline(v = 15, type = "l", col = "red")
}
)
Code : Tout sélectionner
xyplot(y ~ x, groups = g, data = test,
panel = function(x, y, ...){
panel.superpose(x, y, type = "l", ...)
panel.abline(v = 15, type = "l", col = "red")
}
)
Code : Tout sélectionner
xyplot(y ~ x, groups = g, data = test,
auto.key = list(lines = TRUE, points = FALSE),
panel = function(x, y, ...){
panel.superpose(x, y, type = "l", ...)
panel.abline(v = 15, type = "l", col = "red")
}
)
Code : Tout sélectionner
...
vals <- if (is.factor(groups))
levels(groups)
else sort(unique(groups))
...
for (i in seq(along = vals)) {
id <- (groups[subscripts] == vals[i])
if (any(id)) {
args <- list(x = x[id], subscripts = subscripts[id],
pch = pch[i], cex = cex[i], font = font[i],
fontface = fontface[i], fontfamily = fontfamily[i],
col.line = col.line[i], col.symbol = col.symbol[i],
lty = lty[i], lwd = lwd[i], alpha = alpha[i],
...)
if (have.type)
args$type <- type
if (!is.null(y))
args$y <- y[id]
do.call("panel.groups", args)
}
}
Code : Tout sélectionner
xyplot(y ~ x, groups = g, data = test,
auto.key = list(space="right"),
panel = function(x, y, ...){
panel.superpose(x, y, type = "p", ...)
panel.abline(0,1, type = "l", col = "red")
}
)
Code : Tout sélectionner
legend("bottomright", c(paste("r² =", r2), paste("RMSE =", rmse)), bty="n", cex=0.8)
je me permet de vous indiquer la fonction matplot() du package graphics que je trouve beaucoup plus souple que les fonctions de lattice (en particulier je n'ai jamais trouvé comment se débarrasser du fond gris des graphiques de lattice).
Code : Tout sélectionner
lattice.options(default.theme = "col.whitebg")
J'utilise les deux types de fct: celles du package lattice sont infiniment plus souples que matplot et concernent un panel bcp plus large de types de graphes.
Par ailleurs, il faudrait mettre à jour votre version de R car le fond gris n'est plus la valeur par défaut des graphes Trellis depuis plus d'un an. Just for the record, la couleur du fond de ces graphes peut être contrôlée de différentes manières, par exemple en spécifiant un "theme" en passant par l'interface trellis.options. Par exemple, si vous voulez vous débarrasser du fond gris, vous pouvez faire:
Pierre Casadebaig a écrit :Bonjour,
Je réponds à ce fil en déviant un peu du problème initial...
Je voudrais utiliser la fonction xyplot (le code de Renaud, surtout) pour tracer dans un seul graphe
* (valeur estimées = f(valeurs prédites)) par groupes (dans mon cas des variétés)
* la première bissectrice
* une légende indiquant la qualité d'ajustements (r² et RMSE) calculée precedement
Code : Tout sélectionner
x <- 1:10
y <- 2 * x + rnorm(10, 0, 2)
fm <- lm(y ~ x)
R2 <- round(summary(fm)$r.squared, 2)
S2 <- round((summary(fm)$sigma)^2, 2)
library(lattice)
library(grid)
xyplot(y ~ x,
panel = function(x, y){
# points
panel.xyplot(x, y)
# droite de régression
panel.lmline(x, y)
# R2
grid.text(x = unit(0, "npc") + unit(2, "mm"),
y = unit(1, "npc") - unit(2, "mm"),
hjust = 0, vjust = 1,
label = bquote(R^2 == .(R2)))
# S2
grid.text(x = unit(0, "npc") + unit(2, "mm"),
y = unit(1, "npc") - unit(2, "mm") - unit(1, "lines"),
hjust = 0, vjust = 1,
label = bquote(hat(sigma)^2 == .(S2)))
})
Code : Tout sélectionner
xyplot(y ~ x, groups = g, data = test,
auto.key = list(space="right"),
panel = function(x, y, ...){
panel.superpose(x, y, type = "p", ...)
panel.abline(0,1, type = "l", col = "red")
}
)
Mais je ne comprends pas du tout (l'aide de R pour l'argument "legend" de xyplot() est ardue pour un non initié...) comment ajouter un élément de légende dans cette fonction qui me parait plus pratique mais plus dure d'accès que les fonctions plot() et legend() commeCode : Tout sélectionner
legend("bottomright", c(paste("r² =", r2), paste("RMSE =", rmse)), bty="n", cex=0.8)
Code : Tout sélectionner
maLegende <- list(
x = .15, y = .9, corner = c(0, 1), columns = 1,
text = list(text = c(parse(text = paste("R^2 ==", R2)),
parse(text = paste("hat(sigma)^2 ==", S2)))))
xyplot(y ~ x,
key = maLegende,
panel = function(x, y){
# points
panel.xyplot(x, y)
# droite de régression
panel.lmline(x, y)
})
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité