Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R “ggplot2”中带有“fill”选项的直方图中的密度值错误`_R_Ggplot2_Histogram_Fill - Fatal编程技术网

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()