在ggplot2中将密度图覆盖到每个现有的构面包裹密度图?

问题描述

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

enter image description here

我也有一个单独的posixct日期时间数据和完全不同的数据帧的密度图:

enter image description here

我想将此第二个密度图覆盖在第一个密度图的每个单独的facet_wrapped图上。有没有办法做到这一点?通常,如果我有要进行面包装的任何类型的图,并且要在面包装的每个面上叠加的另一种类型相同但数据不同的图,该如何做?

解决方法

从理论上讲,这应该很简单,因为在第二个数据帧中没有要刻面的列。下面的示例:

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...