在`ggplot2`

时间:2018-01-01 14:14:02

标签: r ggplot2 histogram fill

我在ggplot2中创建了R的直方图,其中的区域用颜色分隔并注意到一件事。当直方图的区间用带有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函数中的内容。我用Google搜索&#34; geom_histogram密度填充&#34;并且无法找到很多帮助。

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

  1. 按照第二个直方图中的颜色分隔
  2. 尺寸和形状与第一个直方图相同
  3. 纵轴为密度
  4. 你会如何处理问题?

2 个答案:

答案 0 :(得分:1)

我认为你可能想要的是:

ggplot(df, aes(x = x, fill=b)) + 
  geom_histogram()
而不是密度。如上所述,密度需要额外的计算。

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

如果希望手动轴的范围为0到.4,则需要手动设置轴。

答案 1 :(得分:0)

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

固定

NumberFormatException