直方图中的密度值错误,`ggplot2`中有`fill`选项

问题描述 投票:0回答:2

我在ggplot2R创建直方图,其箱子用颜色分开,注意到一件事。当直方图的区间用fill选项用颜色分隔时,直方图的密度值变得有趣。

这是数据。

set.seed(42)
x <- rnorm(10000,0,1)
df <- data.frame(x=x, b=x>1)

这是没有fill的直方图。

ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y=..density..))

enter image description here

这是fill的直方图。

ggplot(df, aes(x = x, fill=b)) + 
  geom_histogram(aes(y=..density..))

enter image description here

你可以看到后者非常疯狂。箱子的左侧伸出来。每种颜色的箱的密度值显然是错误的。

我想了一会儿这个问题。第一个直方图是正常的,数据不能错。它应该是ggplot2geom_histogram函数中的东西。我用谷歌搜索“geom_histogram密度填充”,并没有找到太多的帮助。

我希望最终产品看起来像:

  1. 如第二个直方图中所示,按颜色分隔
  2. 尺寸和形状与第一个直方图相同
  3. 垂直轴是密度

你会如何处理问题?

r ggplot2 histogram fill
2个回答
1
投票

我想你可能想要的是这个:

ggplot(df, aes(x = x, fill=b)) + 
  geom_histogram()

而不是密度。如上所述,密度要求额外的计算。

有一点很重要(在我看来)是直方图是一个变量的图形。一旦开始从其他变量添加数据,您就会开始将它们更改为条形图或其他类似的东西。

如果希望它的范围从0到.4,您将需要手动设置轴。


0
投票

当您在ggplot中为fill参数提供列名时,它会对可变量进行分组,并根据每个组使用唯一颜色绘制它们。 如果你想要一个颜色的情节只需指定你想要的颜色:

FIXED

ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y=..density..),fill="Blue")
© www.soinside.com 2019 - 2024. All rights reserved.