首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ggplot不会在一个图R中绘制两个geom

ggplot不会在一个图R中绘制两个geom
EN

Stack Overflow用户
提问于 2019-06-02 21:49:59
回答 2查看 46关注 0票数 0

我尝试在一个图形中同时绘制geom_histogramgeom_density。当我将两者分开绘制时,我会得到我想要的输出(直方图和密度图),但当我尝试组合它们时,只会显示直方图(无论直方图/密度在代码中的顺序如何)。

我的代码如下所示:

代码语言:javascript
复制
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一起显示。

EN

回答 2

Stack Overflow用户

发布于 2019-06-02 22:11:37

由于您在这里没有提供任何数据,因此基于mtcar的解决方案:

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

代码语言:javascript
复制
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)

这给出了预期的输出:

您可以根据需要调整此解决方案。只需对数据进行缩放或密度图即可

票数 0
EN

Stack Overflow用户

发布于 2019-06-02 22:41:34

这应该可以完成这项工作,大致如下:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56415650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档