使用ggplot2在一个图中显示两个不同的信息

时间:2017-09-19 01:15:20

标签: r ggplot2

我想知道是否可以在一个情节中显示两个不同的信息?

所以我的意思是,假设我有一个像这样的简单数据集:

library(ggplot2) values = c(1,4,6,7,8,2,3,9,9,8) x = 1:10

所以我可以使用

绘制这个简单的函数
 data=data.frame(x, values)
 ggplot(data, aes(x=x, y=values)) + geom_line()

所以现在问题来了,我还有另一个信息/另一个y-vector告诉我每个条目,如果它在一个有趣的子集内,所以类似:

 more_info = c("no", "no", "yes", "yes", "no", "yes", "yes", "no", "yes", "yes")

我希望这些其他信息可以在我的功能上绘制,比如颜色框(蓝色框代表是)。 enter image description here

我已经用geom_bar()尝试过了 - 这不是我想要的,因为它会为每个条目绘制一个条形图 - 我想在图中有条形图,如果它们连续3个是 - 它们应该用一个彩色的盒子展示。

1 个答案:

答案 0 :(得分:1)

使用geom_rect绘制矩形。首先,我使用dplyr添加no列,只要x列设置为&#34; no&#34;:<,就会匹配more_info列/ p>

library(dplyr)
data = data.frame(x, values, more_info) %>% 
  mutate(no = ifelse(more_info == "no", x, NA))
data$no[1:2] = NA # because you wanted to remove the leading no's

这是情节(我使矩形在 no 之前开始半个空格,并在 no 结束之后结束半个空格):

library(ggplot2)
ggplot(data) + 
  geom_line(aes(x=x, y=values)) + 
  geom_rect(aes(xmin = no - 0.5, xmax = no + 0.5, ymin = -Inf, ymax = Inf), alpha = 0.2, fill = "purple") 

结果:

enter image description here