R 在ggplot2的条形图中为分类变量添加着色替代区域

R 在ggplot2的条形图中为分类变量添加着色替代区域,r,ggplot2,visualization,R,Ggplot2,Visualization,我正在尝试使用ggplot2绘制条形图,如下所示: library(ggplot2) ggplot(mtcars, aes(factor(carb))) + geom_bar() + coord_flip() x轴是一个连续变量,而y轴是一个分类变量(因子) 我想在每个条后面添加备用着色区域,以区分y轴上的因子。我知道我可以使用geom\u rect()来实现这一点。当面积为系数时,如何计算该面积的y轴限制?矩形的x轴限制为-Inf至Inf 我在寻找一些与这张图片大致相同的东西,但是

我正在尝试使用
ggplot2
绘制条形图,如下所示:

library(ggplot2)
ggplot(mtcars, aes(factor(carb))) +
  geom_bar() +
  coord_flip()

x轴是一个连续变量,而y轴是一个分类变量(
因子

我想在每个条后面添加备用着色区域,以区分y轴上的因子。我知道我可以使用
geom\u rect()
来实现这一点。当面积为
系数时,如何计算该面积的y轴限制?矩形的x轴限制为
-Inf
Inf

我在寻找一些与这张图片大致相同的东西,但是是条形图而不是箱线图


也许是沿着这些线的某个地方,你将颜色不同的较宽的阴影条与较暗的较小条叠加在一起

ggplot(mtcars, aes(factor(carb))) +
  geom_bar(width = 1.1, aes(x = factor(carb), fill = ifelse(mtcars$carb %in% c(1,3,6), "blue", "transparent"))) +
  guides(fill = FALSE) +
  geom_bar(width = 0.7) +
  scale_fill_manual(values = c("transparent", "blue")) +
  coord_flip()
解决了这个问题

# Create data.frame with shading info
shading <- data.frame(min = seq(from = 0.5, to = max(as.numeric(as.factor(mtcars$carb))), by = 1),
           max = seq(from = 1.5, to = max(as.numeric(as.factor(mtcars$carb))) + 0.5, by = 1),
           col = c(0,1))

# Plot
ggplot() +
  geom_bar(data = mtcars, mapping = aes(factor(carb))) +
  geom_rect(data = shading,
            aes(xmin = min, xmax = max, ymin = -Inf, ymax = Inf,
                fill = factor(col), alpha = 0.1)) +
  scale_fill_manual(values = c("white", "gray53")) +
  geom_bar(data = mtcars, mapping = aes(factor(carb))) +
  coord_flip() +
  guides(fill = FALSE, alpha = FALSE)
#使用着色信息创建data.frame
阴影