这是我基于内置数据集对此的破解
iris
(因为您没有提供可复制的数据)。为了创建较小的移位数据集,我使用
dplyr
为了保留每个物种的前20行,并在每次观察的萼片长度上增加1行:
smallIris <-
iris %>%
group_by(Species) %>%
slice(1:20) %>%
ungroup() %>%
mutate(Sepal.Length = Sepal.Length + 1)
最后的代码很接近,但没有为两个直方图指定不同的颜色。如果您设置
fill
不同的是,你会让他们以不同的方式出现。您可以直接设置此选项(例如,将其中一个选项中的“蓝色”更改为“红色”),也可以在中设置名称
aes
. 将其设置为
aes公司
具有创建(和标记)图例的优势:
ggplot() +
geom_histogram(data=iris
, aes(x=Sepal.Length
, fill = "Big"
, y=(..count..)*100/(sum(..count..)))
, alpha=0.3) +
geom_histogram(data=smallIris
, aes(x=Sepal.Length
, fill = "Small"
, y=(..count..)*100/(sum(..count..)))
, alpha=0.3) +
facet_wrap(~Species)
创建此项:
然而,我不喜欢重叠直方图的外观,所以我更喜欢使用密度图。你可以像上面那样做(只需更改
geom_histogram
),但我认为通过堆叠数据,您可以获得更多的控制(以及将其扩展到两个以上组的能力)。同样,这使用
dplyr
要将两个数据集缝合在一起:
bigIris <-
bind_rows(
small = smallIris
, big = iris
, .id = "Source"
)
然后,您可以相对轻松地创建绘图:
bigIris %>%
ggplot(aes(x = Sepal.Length, col = Source)) +
geom_line(stat = "density") +
facet_wrap(~Species)
创建: