我在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..))
这是fill
的直方图。
ggplot(df, aes(x = x, fill=b)) +
geom_histogram(aes(y=..density..))
你可以看到后者非常疯狂。箱子的左侧伸出来。每种颜色的箱的密度值显然是错误的。
我想了一会儿这个问题。第一个直方图是正常的,数据不能错。它应该是ggplot2
或geom_histogram
函数中的东西。我用谷歌搜索“geom_histogram密度填充”,并没有找到太多的帮助。
我希望最终产品看起来像:
你会如何处理问题?
我想你可能想要的是这个:
ggplot(df, aes(x = x, fill=b)) +
geom_histogram()
而不是密度。如上所述,密度要求额外的计算。
有一点很重要(在我看来)是直方图是一个变量的图形。一旦开始从其他变量添加数据,您就会开始将它们更改为条形图或其他类似的东西。
如果希望它的范围从0到.4,您将需要手动设置轴。
当您在ggplot中为fill参数提供列名时,它会对可变量进行分组,并根据每个组使用唯一颜色绘制它们。 如果你想要一个颜色的情节只需指定你想要的颜色:
ggplot(df, aes(x = x)) +
geom_histogram(aes(y=..density..),fill="Blue")