Как использовать ggplot2 в R, как сделать фон графика разными цветами в разных регионах?
Я делаю простой штрих-код в R, используя пакет ggplot2. Вместо того, чтобы серый по умолчанию я хотел бы разделить фон на пять регионов, каждый из которых отличается (но аналогичным образом заниженным) цветом. Как это сделать?
В частности, я хотел бы, чтобы пять цветных областей работали от 0-25, 25-45, 45-65, 65-85 и 85-100, где цвета представляют собой более бронзовые, бронзовые, серебряные, золота и платины соответственно. Предложения по цветовой гамме очень приветствуются.
Спасибо за любую помощь.
Ответы
Ответ 1
Вот пример, чтобы вы начали:
#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 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))
![enter image description here]()
Ответ 2
Я хотел перенести строку или полоски гистограммы на передний план, как это было предложено baptiste выше, и исправить фон с помощью
+ theme(panel.background = element_rect(), panel.grid.major = element_line( colour = "white") )
, к сожалению, я мог только сделать это, отправив geom_bar
дважды, надеюсь, кто-то может улучшить код и сделать ответ полным.
background <- data.frame(lower = seq( 0 , 3 , 1.5 ),
upper = seq( 1.5, 4.5, 1.5 ),
col = letters[1:3])
ggplot() +
geom_bar( data = mtcars , aes( factor(cyl) ) ) +
geom_rect( data = background ,
mapping = aes( xmin = lower ,
xmax = upper ,
ymin = 0 ,
ymax = 14 ,
fill = col ) ,
alpha = .5 ) +
geom_bar(data = mtcars,
aes(factor(cyl))) +
theme(panel.background = element_rect(),
panel.grid.major = element_line( colour = "white"))
Производит это,
![geom_bar and geom_rect]()
Посмотрите этот сайт для предложений цветовой схемы.