ggplot不在一个图形R中绘制两个几何图形

时间:2019-06-02 13:49:58

标签: r ggplot2 histogram density-plot

我尝试在一个图中同时绘制geom_histogramgeom_density。当我将两个彼此分开绘制时,可以获得所需的输出(直方图和密度图),但是当我尝试将它们组合时,仅显示直方图(无论代码中直方图/密度的顺序如何)。

我的代码如下:

ggplot(data=Stack_time, aes(x=values))+geom_density(alpha=0.2, fill="#FF6666")+
  geom_histogram(binwidth = 50, colour="black", fill="#009454")

我没有收到任何错误消息,但从未与geom_density组合显示geom_histogram

2 个答案:

答案 0 :(得分:0)

由于此处未提供任何数据,因此是基于mtcar的解决方案:

您的代码几乎正确。您需要在直方图中添加一个alpha值,以便可以看到密度。但是,您还需要缩放数据,因为密度图在0到1的范围内。如果数据值大于1,则密度图可能很小并且看不到。使用如下定义的函数scale_data,我将数据缩放到0-1的范围

df=mtcars
scale_data <- function(x){(x-min(x))/(max(x)-min(x))}
df$mpg2 <- scale_data(df$mpg)
library(ggplot2)
ggplot(data=df, aes(x=mpg2))+geom_density(alpha=0.2, fill="#FF6666")+
  geom_histogram(binwidth = 50, colour="black", fill="#009454", alpha = 0.1)

这给出了预期的输出: plot

您可以根据需要调整此解决方案。只需按比例缩放数据或根据数据绘制密度图

答案 1 :(得分:0)

这应该可以完成工作,大约:

data.frame(x=rnorm(1000)) %>% ggplot(aes(x, ..density..)) + geom_histogram(binwidth = 0.2, alpha=0.5) + geom_density(fill="red", alpha=0.2)