J'essaie de faire un complot d'interaction avec ggplot2
. Mon code est ci-dessous:
library(ggplot2)
p <- qplot(as.factor(dose), len, data=ToothGrowth, geom = "boxplot", color = supp) + theme_bw()
p <- p + labs(x="Dose", y="Response")
p <- p + stat_summary(fun.y = mean, geom = "point", color = "blue")
p <- p + stat_summary(fun.y = mean, geom = "line", aes(group = 1))
p <- p + opts(axis.title.x = theme_text(size = 12, hjust = 0.54, vjust = 0))
p <- p + opts(axis.title.y = theme_text(size = 12, angle = 90, vjust = 0.25))
print(p)
Comment puis-je tracer des moyens de combinaison de niveau de dose-suppp plutôt que le seul niveau de dose signifie que je suis ici? Merci d'avance pour votre aide.
Vous pouvez précalculer les valeurs dans leur propre cadre de données:
toothInt <- ddply(ToothGrowth,.(dose,supp),summarise, val = mean(len))
ggplot(ToothGrowth, aes(x = factor(dose), y = len, colour = supp)) +
geom_boxplot() +
geom_point(data = toothInt, aes(y = val)) +
geom_line(data = toothInt, aes(y = val, group = supp)) +
theme_bw()
Notez que l'utilisation ggplot
plutôt que qplot
rend la construction graphique beaucoup plus claire pour des parcelles plus complexes telles que celles-ci (IMHO).
Si vous pensez avoir besoin d'une approche plus générale, vous pouvez essayer la fonction Rxnnorm dans le package Handystuff (Github.com/bryanhanson/handystuff). Disclaimer: Je suis l'auteur. Disclaimer n ° 2: L'option de tracé de la boîte ne fonctionne pas assez bien, mais toutes les autres options vont bien.
Voici un exemple utilisant les données à la denthe:
p <- rxnNorm(data = ToothGrowth, res = "len", fac1 = "dose", fac2 = "supp", freckles = TRUE, method = "iqr", fac2cols = c("red", "green"))
print(p)
beaucoup plus facile. sans diverse. directement avec ggplot2.
ggplot(ToothGrowth, aes(x = factor(dose) , y=len , group = supp, color = supp)) +
geom_boxplot() +
geom_smooth(method = lm, se=F) +
xlab("dose") +
ylab("len")