如何在相同的y轴上叠加2个图,但在R中叠加不同的x轴

时间:2017-10-10 21:43:46

标签: r ggplot2

有没有办法叠加两个不同x轴的图?

我有一个患者在服用不同药物的不同日子的收缩压数据集。我想按日期创建他们的SBP的散点图,并在每种药物上叠加他们的SBP的箱线图。我分别创建了两个图,但无法弄清楚如何将它们组合在一个图中。

library(ggplot2)
library(lubridate)

df <- data.frame(date = c(ymd("2014-09-01") + c(1:5), ymd("2014-09-11") + c(1:5), ymd("2014-09-21") + c(1:5)), sbp1 = round(runif(n=15, min=130, max=200)), group = c(rep("A",5), rep("B",5), rep("C", 5))) 
p1 <- ggplot(df, aes(x=date, y=sbp1)) + geom_point(aes(color = group)) 
p2 <- ggplot(df, aes(x=group, y=sbp1)) + geom_boxplot(aes(x=group, y = sbp1)) 
p1
p2

p1 p2

1 个答案:

答案 0 :(得分:1)

您必须决定如何将x坐标映射到单个比例 - 例如为整个组选择一个日期:

df %>%
  group_by(group) %>%
  mutate(groupdate = first(date) + 3) %>%
  ggplot(aes(y = sbp1)) +
  geom_boxplot(aes(x = groupdate, group = group)) +
  geom_point(aes(x = date, colour = group))

然后,您可以通过+将ggplot几何图形叠加在一起。感觉有点hacky,但产生了这个:

points and boxplots on the same axis