R 将着色目标区域添加到ggplot2条形图

R 将着色目标区域添加到ggplot2条形图,r,ggplot2,R,Ggplot2,我有两个数据框:一个用于在条形图中创建条形图,另一个用于在条形图后面使用geom_èrect创建着色的“目标区域” 以下是示例数据: test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12)) target.data <- data.frame(crop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14)) test.data这是对您的问题的解决方案,但我想

我有两个数据框:一个用于在条形图中创建条形图,另一个用于在条形图后面使用geom_èrect创建着色的“目标区域”

以下是示例数据:

test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12))
target.data <-  data.frame(crop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14))

test.data这是对您的问题的解决方案,但我想更好地理解您的问题,因为我们可能可以制作一个更易于解释的绘图。您所要做的就是将aes(x=NULL)添加到geom_rect()调用中。我冒昧地将add.data中的变量“crop”更改为“brop”,以尽量减少任何混淆

test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12))
add.data <-  data.frame(brop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14))

ggplot(test.data, aes(y=mean, x=crop)) +
  geom_hline(data = add.data, aes(yintercept = mean, color = brop)) +
  geom_bar(stat="identity") +
  geom_rect(data = add.data, aes(xmin=-Inf, xmax=Inf, x = NULL, ymin=min, ymax=max, fill = brop),
    alpha = 0.5, show.legend = F)

test.data您想用这个绘图来可视化什么,特别是geom_rect()?这是因为您的
x
变量名为crop,但在第二个数据集中它有不同的值。将
inherit.aes=FALSE
添加到
geom\u rect
应该可以解决这个问题。也许可以添加一个解释来解释为什么会发生这种情况?另一种选择是在
geom\u rect
中使用
inherit.aes=FALSE
,这样就不会继承全局美学。感谢您的解决方案!有道理……我刚接触ggplot2,来自莱迪思。是的,所示的示例非常难看,但它只是一个示例…我的实际应用程序更易于解释。
b <- a + geom_rect(aes(xmin=-Inf, xmax=Inf, ymin=min, ymax=max, fill = crop), data = target.data, alpha = 0.5)
b
test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12))
add.data <-  data.frame(brop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14))

ggplot(test.data, aes(y=mean, x=crop)) +
  geom_hline(data = add.data, aes(yintercept = mean, color = brop)) +
  geom_bar(stat="identity") +
  geom_rect(data = add.data, aes(xmin=-Inf, xmax=Inf, x = NULL, ymin=min, ymax=max, fill = brop),
    alpha = 0.5, show.legend = F)