59 votes

Rendre l'arrière-plan d'un graphique de différentes couleurs dans différentes régions

Je crée un diagramme à barres simple dans R en utilisant le package ggplot2. Plutôt que le gris par défaut, j'aimerais diviser l'arrière-plan en cinq régions, chacune d'une couleur différente (mais tout aussi discrète). Comment puis-je faire cela?

Plus précisément, j'aimerais que les cinq régions colorées s'étendent de 0-25, 25-45, 45-65, 65-85 et 85-100 où les couleurs représentent pire que le bronze, le bronze, l'argent, l'or et le platine respectivement. Les suggestions pour un schéma de couleurs sont également les bienvenues.

71voto

Chase Points 27342

Voici un exemple pour vous aider à démarrer :

 #Fake data
dat <- data.frame(x = 1:100, y = cumsum(rnorm(100)))
#Breaks for background rectangles
rects <- data.frame(xstart = seq(0,80,20), xend = seq(20,100,20), col = letters[1:5])


#As Baptiste points out, the order of the geom's matters, so putting your data as last will 
#make sure that it is plotted "on top" of the background rectangles. Updated code, but
#did not update the JPEG...I think you'll get the point.

ggplot() + 
  geom_rect(data = rects, aes(xmin = xstart, xmax = xend, ymin = -Inf, ymax = Inf, fill = col), alpha = 0.4) +
  geom_line(data = dat, aes(x,y))

entrez la description de l'image ici

7voto

dmi3kno Points 1711

Étant donné que vous recherchez une surbrillance de zone verticale (ou horizontale), geom_rect() peut être un dépassement. Considérez plutôt geom_ribbon()

 ggplot(mtcars, aes(x = wt, y = mpg)) + 
  geom_point() +
  geom_ribbon(aes(xmin=3, xmax=4.2), alpha=0.25) +
  theme_minimal()

geom_ruban

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X