如何避免 ggplot2 中的平坦密度线
How to avoid a flat density line in ggplot2
我正在尝试在 2 个重叠的直方图上绘制一条密度线,但对于我使用的每个代码,该线都变为 "flat"。
我必须创建两个直方图,每个都具有正态分布和不同数量的样本。然后我必须将两者重叠并写下密度线。全部使用 ggplot2 包。
这是我试过的:
xx<-data.frame(dat = rnorm(n, mean, sd))
yy<-data.frame(dat = rnorm(n, mean, sd))
both<-rbind(xx, yy)
ggplot(both, aes(x=dat)) +
geom_histogram(data = xx, fill = "red", alpha = 0.2,binwidth=0.25) +
geom_histogram(data = yy, fill = "blue", alpha = 0.2, binwidth=0.25) +
theme_light() +
geom_line(data=samples, stat = "density")
我也试过geom_density
但是结果是一样的...
密度线并不平坦,它只是与直方图的比例非常不同,因为默认情况下,直方图是使用 y 轴上的计数创建的。
您应该指定 y = after_stat(density)
:
# packages
library(ggplot2)
# data
set.seed(1)
sample1 <- data.frame(dat = rnorm(10000, 0, 1))
sample2 <- data.frame(dat = rnorm(15000, 3, 1))
both <- rbind(sample1, sample2)
ggplot(both, aes(x = dat)) +
geom_histogram(aes(y = after_stat(density)), data = sample1, fill = "red", alpha = 0.2, binwidth = 0.25) +
geom_histogram(aes(y = after_stat(density)), data = sample2, fill = "blue", alpha = 0.2, binwidth=0.25) +
theme_light() +
geom_line(stat = "density")
由 reprex package (v0.3.0)
于 2020-04-30 创建
黑线代表两种正态分布的一种混合。您应该阅读 after_stat
函数的帮助页面以获取更多详细信息。
我正在尝试在 2 个重叠的直方图上绘制一条密度线,但对于我使用的每个代码,该线都变为 "flat"。
我必须创建两个直方图,每个都具有正态分布和不同数量的样本。然后我必须将两者重叠并写下密度线。全部使用 ggplot2 包。
这是我试过的:
xx<-data.frame(dat = rnorm(n, mean, sd))
yy<-data.frame(dat = rnorm(n, mean, sd))
both<-rbind(xx, yy)
ggplot(both, aes(x=dat)) +
geom_histogram(data = xx, fill = "red", alpha = 0.2,binwidth=0.25) +
geom_histogram(data = yy, fill = "blue", alpha = 0.2, binwidth=0.25) +
theme_light() +
geom_line(data=samples, stat = "density")
我也试过geom_density
但是结果是一样的...
密度线并不平坦,它只是与直方图的比例非常不同,因为默认情况下,直方图是使用 y 轴上的计数创建的。
您应该指定 y = after_stat(density)
:
# packages
library(ggplot2)
# data
set.seed(1)
sample1 <- data.frame(dat = rnorm(10000, 0, 1))
sample2 <- data.frame(dat = rnorm(15000, 3, 1))
both <- rbind(sample1, sample2)
ggplot(both, aes(x = dat)) +
geom_histogram(aes(y = after_stat(density)), data = sample1, fill = "red", alpha = 0.2, binwidth = 0.25) +
geom_histogram(aes(y = after_stat(density)), data = sample2, fill = "blue", alpha = 0.2, binwidth=0.25) +
theme_light() +
geom_line(stat = "density")
由 reprex package (v0.3.0)
于 2020-04-30 创建黑线代表两种正态分布的一种混合。您应该阅读 after_stat
函数的帮助页面以获取更多详细信息。