让我们从钻石数据集中绘制一些直方图。
library(tidyverse)
ggplot(diamonds, aes(price)) +
geom_histogram(bins = 50) +
facet_wrap(~ cut)
我可以使用相同的数据并将其绘制为geom_area
,并且分布完全改变。如果您查看“公平”或“良好”分布上方的分面图,则对于它们各自的分面而言只是短暂的消息。查看下面geom_area
上的“公平”和“良好”分布,它们是图表上最大的山脉。什么地方出了错?两者都是计数,而不是密度。分布看起来不一样吗?如何使geom_area
分布与geom_histogram
分布相同?
ggplot(diamonds, aes(price, fill = cut)) +
geom_area(bins = 50, stat = "bin")
答案 0 :(得分:4)
我认为是因为geom_area()
会堆叠分布。如果您也geom_area()
也有相同的结果,那么您将得到:
library(tidyverse)
ggplot(diamonds, aes(price)) +
geom_histogram(bins = 50) +
facet_wrap(~ cut)
ggplot(diamonds, aes(price)) +
geom_area(bins = 50, stat = "bin") +
facet_wrap(~ cut)
最好的证明是这样的:
# Take only one facet <- cut
diam <- diamonds[which(diamonds$cut=='Ideal'),]
ggplot(diam, aes(price)) +
geom_histogram(bins = 50) +
facet_wrap(~ cut)
ggplot(diam, aes(price)) +
geom_area(bins = 50, stat = "bin") +
facet_wrap(~ cut)
答案 1 :(得分:1)
geom_area()函数显示累积值。只有具有颜色的部分才是特定因子的计数。如果使用以下代码,则将获得与直方图一致的结果。
ggplot(diamonds, aes(price, fill = cut)) +
geom_area(bins = 50, stat = "bin") + facet_wrap(~cut)
我想您正在寻找geom_density。
尝试:
ggplot(diamonds, aes(price, fill = cut)) +
geom_density(bins = 50, stat = "bin", alpha = 0.3)