R “ggplot2”中带有“fill”选项的直方图中的密度值错误`
我正在用R “ggplot2”中带有“fill”选项的直方图中的密度值错误`,r,ggplot2,histogram,fill,R,Ggplot2,Histogram,Fill,我正在用R中的ggplot2创建直方图,其箱子用颜色隔开,并注意到一件事。当使用fill选项以颜色分隔直方图的存储单元时,直方图的密度值会变得有趣 这是数据 set.seed(42) x <- rnorm(10000,0,1) df <- data.frame(x=x, b=x>1) 这是一个带有填充的直方图 ggplot(df, aes(x = x)) + geom_histogram(aes(y=..density..)) ggplot(df, aes(x =
R
中的ggplot2
创建直方图,其箱子用颜色隔开,并注意到一件事。当使用fill
选项以颜色分隔直方图的存储单元时,直方图的密度值会变得有趣
这是数据
set.seed(42)
x <- rnorm(10000,0,1)
df <- data.frame(x=x, b=x>1)
这是一个带有填充的直方图
ggplot(df, aes(x = x)) +
geom_histogram(aes(y=..density..))
ggplot(df, aes(x = x, fill=b)) +
geom_histogram(aes(y=..density..))
你可以看到后者相当疯狂。垃圾箱的左侧突出。每种颜色箱子的密度值明显错误
我考虑了一会儿这个问题。数据不可能是错误的,因为第一个直方图是正常的。它应该是ggplot2
或geom_直方图
函数中的内容。我在谷歌上搜索“geom_直方图密度填充”,找不到太多帮助
我希望最终产品看起来像:
如第二个直方图中所示,由颜色分隔
大小和形状与第一个直方图相同
垂直轴为密度
如何处理这个问题?当您在ggplot中为fill参数提供列名时,它会将变量分组,并根据每个组以唯一的颜色进行打印。
如果要为打印指定单一颜色,只需指定所需的颜色:
固定的
我想你可能想要的是:
ggplot(df, aes(x = x, fill=b)) +
geom_histogram()
而不是密度。如上所述,密度需要额外计算
在我看来,重要的一点是直方图是一个变量的图形。一旦您开始添加来自其他变量的数据,您就开始将它们更多地更改为条形图或其他类似的内容
如果希望轴的范围为0到0.4,则需要手动设置轴 正在发生的是,您正在绘制密度-这将规范化每个组,使其积分为1。尝试使用频率直方图查看:ggplot(df,aes(x=x))+geom_直方图();ggplot(df,aes(x=x,fill=b))+geom_直方图()你想实现什么?你希望最终产品是什么样子?“柱状图中的箱子由颜色分隔”是什么意思?@Nate形状很完美。但是密度是第一个直方图的两倍。我希望它是相同的。@Elin我更新了原始帖子。密度不是百分比或比例。每个组的总面积为1,因此,是的,两组的面积是一组的两倍。它不应该是ggplot(df,aes(x=x))+geom_直方图(aes(y=…density..),fill=“Blue”)
那么它应该是,修正。我认为建议是填充颜色只是一种颜色进入geom_直方图,而不是ggplot语句。
ggplot(df, aes(x = x, fill=b)) +
geom_histogram()