J'utilise ggplot2
pour créer des nuages de points assez simples. J'ai actuellement deux lignes verticales simples utilisant:
... + geom_vline(xintercept=159684.186,linetype="dotted",size=0.6)+
geom_vline(xintercept=159683.438,linetype="dotted",size=0.6)+ ...
Quelqu'un peut-il me dire comment ombrer la zone entre ces deux lignes du haut de l'axe Y à l'axe X?
Vous pouvez utiliser geom_rect
.
... + geom_rect(aes(xmin=159683.438, xmax=159684.186, ymin=0, ymax=Inf))
Les deux valeurs de x proviennent de votre geom_vline
appels. en utilisant ymin=0
le ramène à 0; ymax=Inf
le mènera jusqu'au sommet de l'axe. Si vous voulez qu'il aille jusqu'à l'axe des x plutôt que 0, vous pouvez utiliser ymin=-Inf
.
Quelques notes:
Cela fonctionne mieux s'il est au début de l'ordre des géomètres afin qu'il soit dessiné en premier/en dessous des autres parties (en particulier les données du nuage de points).
Vous pouvez définir la couleur de remplissage (fill
esthétique) en dehors de l'appel aes
à une valeur fixe. Je voudrais également définir la transparence (alpha
) à quelque chose comme 0,5 afin que les éléments derrière elle (les lignes de la grille, très probablement, si vous le mettez en tant que premier geom) soient toujours visibles.
Il peut être encore plus facile d'utiliser annotate()
pour cela si vous connaissez les coordonnées pour quelle région vous souhaitez ombrer. J'ai rencontré d'étranges problèmes de rendu lorsque j'ai essayé d'utiliser geom_rect()
.
library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() +
annotate("rect", xmin = 3, xmax = 4.2, ymin = 12, ymax = 21,
alpha = .2)
Je sais que c'est essentiellement la même chose; Je suis juste tombé sur cette friandise de ici .