Il existe un fewposts concernant l'utilisation de zones ombrées dans ggplot2, mais je ne pense pas que répondre exactement à ma question. J'ai deux pentes pour les lignes à travers un certain nombre de conditions, et je voudrais ombrer la région entre eux. Voici les données exemple:r - ggplot2 - créer une région ombrée entre deux couches geom_abline
dat <- data.frame(cond1=c("a","a","b","b"),
cond2=c("c","d","c","d"),
x=c(1,5),
y=c(1,5),
sl=c(1,1.2,0.9,1.1),
int=c(0,0.1,0.1,0),
slopeU=c(1.1,1.3,1.2,1.2),
slopeL=c(.9,1,0.7,1))
Ici, sl
est le paramètre de pente moyenne à partir d'une procédure d'ajustement séparé, et slopeU
et slopeL
représentent des régions de confiance supérieur et inférieur sur l'estimation de la pente dans chaque condition. Les interceptions sont contraintes à être les mêmes. Le code suivant trace les meilleures lignes de montage pour chaque condition à l'aide de certains facettage:
p <- ggplot(dat,aes(x=x,y=y,colour=cond1))
p <- p + facet_grid(. ~ cond2)
p <- p + geom_blank()
p <- p + geom_abline(aes(intercept=int,slope=sl,colour=cond1),data=dat)
p
Je voudrais ajouter les lignes définies par intercept=int, slope=slopeU
et intercept=int, slope=slopeL
à la parcelle et l'ombre de la région entre eux (par exemple à alpha=.5
dans le correspondant couleur cond1).
Je reconnais qu'avec un peu de manipulation je pourrais créer un cadre de données spécifiant les valeurs de ces lignes pour au moins deux valeurs x, puis tracer le geom_ribbon ou geom_polygon correspondant pour créer la région ombrée, mais je voudrais trouver plus solution élégante. Ou spécifie-t-il manuellement certaines coordonnées depuis les pentes et intercepte le seul chemin? Comment puis-je créer au mieux la trame de données requise (qui devra avoir plus de lignes que la trame d'origine pour tenir compte de toutes les combinaisons de conditions et de paires x, y).
C'est génial; merci Joran. – tsawallis
Donc, cela fonctionne essentiellement avec mon problème appliqué, mais je ne peux pas obtenir les couleurs sur les régions ombrées à cond1, même en exécutant votre solution exactement. Les régions de ruban remplies sont grises (à alpha = 0,5) mais ont également des bordures de ligne continues minces. Où vais-je mal? Serait-ce une différence de version de ggplot2? Je suis sur 0.9.0. La commande ggplot que j'utilise est comme dans le post original, avec 'p + côtes + guides (fill = guide_legend (override.aes = liste (alpha = 0.1)))' collé ci-dessous. – tsawallis
@waldog Désolé, juste un peu manqué lors de la copie + coller mon code.Vous n'avez qu'à ajouter 'fill = cond1' dans' aes() 'soit dans l'appel' ggplot() 'de niveau supérieur, soit dans l'appel' geom_ribbon' dans la fonction. Je vais éditer momentanément ... – joran