使用facet_wrap进行具有恒定基础层的geom_point叠加

niwlg2el  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(148)

我想建立一个图,在整个样本分布的顶部突出显示不同的数据子集。
我使用geom_hex显示整个样本的分布,以显示大部分数据的位置,然后对于一个子集,我在顶部绘制数据点的实际位置。我想使用facet_wrap来为许多子集做这件事。然而,我当前的代码仅为数据的子集(即geom_hex仅显示数据子集的分布,而不是整个样本)。可以这样使用facet_wrap吗?

set.seed(123)
n = 1000
df = data.frame(x = rnorm(n),
                y = rnorm(n),
                group = sample(letters[1:2], n, replace = TRUE))

ggplot(df, aes(x = x, y = y, col = group)) + 
  geom_hex() +
  geom_point() + 
  facet_grid(~group)
uplii1fm

uplii1fm1#

我找到了答案。它使用ggplot调用中的transform函数从分组变量中删除信息。
您需要在该调用中添加一个col美学(即使它没有被使用)。否则它不工作,这似乎有点黑客。所以我欢迎其他答案。

ggplot(df, aes(x = x, y = y, col = group)) + 
+   geom_hex(data = transform(df, group = NULL), colour = "grey85") +
+   geom_point() + 
+   facet_grid(~group)

相关问题