共享相同y轴的多个直方图上的密度曲线

时间:2019-06-20 03:15:42

标签: r ggplot2 density-plot

我需要在共享相同y轴的3个直方图上覆盖法线密度曲线。每个直方图的曲线必须分开。

我的数据框(示例):

height <- seq(140,189, length.out =  50)
weight <- seq(67,86, length.out = 50)
fev <- seq(71,91, length.out = 50)

df <- as.data.frame(cbind(height, weight, fev))

我为数据创建了直方图:

library(ggplot)
library(tidyr)

df %>% 
gather(key=Type, value=Value) %>% 
ggplot(aes(x=Value,fill=Type)) + 
geom_histogram(binwidth = 8, position="dodge") 

我现在停留在如何将3个变量的正常密度曲线(每个直方图的单独曲线)覆盖在生成的直方图上的问题上。我不介意在y轴上显示计数或密度的最终数字。

是否有任何关于如何从此处进行的想法?

谢谢。

1 个答案:

答案 0 :(得分:1)

我相信问题中的代码几乎是正确的,下面的代码仅使用@akrun提供的链接中的答案。

请注意,我已通过在最后一个加号之前放置一个注释字符来注释掉对facet_wrap的调用。

library(ggplot2)
library(tidyr)

df %>% 
  gather(key = Type, value = Value) %>% 
  ggplot(aes(x = Value, color = Type, fill = Type)) + 
  geom_histogram(aes(y = ..density..),
                 binwidth = 8, position = "dodge") +
  geom_density(alpha = 0.25) #+
  facet_wrap(~ Type)