我想知道是否可以在一个情节中显示两个不同的信息?
所以我的意思是,假设我有一个像这样的简单数据集:
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")
我希望这些其他信息可以在我的功能上绘制,比如颜色框(蓝色框代表是)。
我已经用geom_bar()尝试过了 - 这不是我想要的,因为它会为每个条目绘制一个条形图 - 我想在图中有条形图,如果它们连续3个是 - 它们应该用一个彩色的盒子展示。
答案 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")
结果: