【问题标题】:Overlay density plot to each existing facet wrapped density plot in ggplot2?将密度图覆盖到 ggplot2 中每个现有的面包裹密度图?
【发布时间】:2020-12-02 09:51:28
【问题描述】:

我有一个大约 37000 行的数据框,其中包含字符串格式的“名称”和 posixct 格式的“UTCDateTime”,我正在使用它来生成按名称分组的刻面包装时间密度图:

我还有一个来自完全不同的数据框的 posixct 日期时间数据的单独密度图:

我想在第一个密度图中的每个单独的 facet_wrapped 图中覆盖第二个密度图。有没有办法做到这一点?一般来说,如果我有任何类型的分面包装图和另一个相同类型但不同数据的图,我想在分面包装的每个分面上叠加,我该怎么做?

【问题讨论】:

  • 哦,teunbrand 的回答表明我的知识已经过时了!删除我之前的评论。

标签: r ggplot2 facet-wrap


【解决方案1】:

理论上,这应该就像在第二个数据框中没有您要分面的列一样简单。示例如下:

library(ggplot2)

ggplot(iris, aes(Sepal.Width)) +
  geom_density(aes(fill = Species)) +
  geom_density(data = faithful,
               aes(x = eruptions)) +
  facet_wrap(~ Species)

reprex package (v0.3.0) 于 2020-08-12 创建

编辑:要获得两种类型数据的相同比例的密度,您可以使用 after_stat()* 计算的变量:

ggplot(iris, aes(Sepal.Width)) +
  geom_density(aes(y = after_stat(scaled),
                   fill = Species)) +
  geom_density(data = faithful,
               aes(x = eruptions,
                   y = after_stat(scaled))) +
  facet_wrap(~ Species)

* 在 ggplot2 v3.3.0 之前还有 stat(variable)...variable...

【讨论】:

  • 这行得通,但它们的规模差异太大,所以我决定将数据添加为另一个方面包装。谢谢!
  • 您也可以使用来自geom_density() 的计算变量,请参阅编辑
  • 这似乎很有用,但我想保留单独的比例以最好地代表它们。还是谢谢!
猜你喜欢
  • 2014-03-01
  • 2019-11-07
  • 2013-01-25
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多