【问题标题】:Show two different information in one plot, using ggplot2使用 ggplot2 在一个图中显示两个不同的信息
【发布时间】:2017-09-19 09:58:15
【问题描述】:

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

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

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 向量告诉我每个条目是否在某个有趣的子集中,例如:

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

我希望在我的函数上绘制其他信息,例如颜色框(蓝色框代表是)。

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

【问题讨论】:

标签: r ggplot2


【解决方案1】:

使用geom_rect 绘制矩形。首先,我使用dplyr 添加一个no 列,只要more_info 列设置为“no”,它将匹配您的x 列:

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") 

结果:

【讨论】:

  • 这很有帮助,非常感谢。我花了一段时间才理解你写的内容,但现在我非常感谢这个简单的解决方案。
  • @malajedala 我很困惑,因为您说您想突出显示是行,但您的示例突出显示了否行。无论如何,我很高兴最终能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
相关资源
最近更新 更多