L'ombre région de l'entre deux lignes avec ggplot
Je prépare le suivant deux lignes avec ggplot et voudrais l'ombre d'une région spécifique entre les deux lignes, c'est à dire où y=x2 est plus grand que y=2x, où 2 <= x <= 3.
# create data #
x<-as.data.frame(c(1,2,3,4))
colnames(x)<-"x"
x$twox<-2*x$x
x$x2<-x$x^2
# Set colours #
blue<-rgb(0.8, 0.8, 1, alpha=0.25)
clear<-rgb(1, 0, 0, alpha=0.0001)
# Define region to fill #
x$fill <- "no fill"
x$fill[(x$x2 > x$twox) & (x$x <= 3 & x$x >= 2)] <- "fill"
# Plot #
ggplot(x, aes(x=x, y=twox)) +
geom_line(aes(y = twox)) +
geom_line(aes(y = x2)) +
geom_area(aes(fill=fill)) +
scale_y_continuous(expand = c(0, 0), limits=c(0,20)) +
scale_x_continuous(expand = c(0, 0), limits=c(0,5)) +
scale_fill_manual(values=c(clear,blue))
Le résultat est celui-ci qui vient de nuances de la région sous la droite y=2x, et ce quelle que soit la valeur x - pourquoi?
OriginalL'auteur user2568648 | 2015-02-18
Vous devez vous connecter pour publier un commentaire.
Comment sur l'utilisation de
geom_ribbon
au lieuIl y a un problème si vous n'avez pas le point d'intersection de vos données.cadre. Exemple: x <- seq(0,5,par=0.2); df <- données.frame(x = x, l1 = 5-x, l2 = x); bibliothèque(ggplot2); ggplot(df, aes(x = x)) + geom_line(aes(y=l1)) + geom_line(aes(y=l2)) + geom_ribbon(aes(ymin = pmin(l1,l2), ymax = pmax(l1,l2)), fill = "bleu", alpha=0.5);
Merci pour cette illustration!
OriginalL'auteur Tobias Madsen
Je pense que geom_ribbon est le chemin à parcourir. Il y a 2 étapes à parcourir:
Voyons mon exemple:
OriginalL'auteur user3119765