ggplot 具有共同密度的多重密度
ggplot multiple densities with common density
我想绘制一些东西 "between" 直方图和密度图。这是一个例子:
library(ggplot2)
set.seed(1)
f1 <- rep(1, 100)
v1 <- rnorm(100)
df1 <- data.frame(f1, v1)
f1 <- rep(2, 10)
v1 <- (rnorm(10)+1*2)
df2 <- data.frame(f1, v1)
df <- rbind(df1, df2)
df$f1 <- as.factor(df$f1)
ggplot(df, aes(x = v1, colour = f1)) +
geom_density(position="identity", alpha = 0.6, fill = NA, size = 1)
您会看到每条曲线下的面积为 1.0,这对于密度来说是可以的。但请注意,第二个分布仅由 10 个观察值组成,而不是第一个分布的 100 个。我想要的是曲线 2 下的面积反映了这一点,例如是曲线 1 的十分之一。谢谢。
您可以使用 stat_density
的计算变量,称为 count
。
ggplot(df, aes(x = v1, colour = f1)) +
geom_density(position="identity", alpha = 0.6, fill = NA, size = 1,
aes(y = after_stat(count)))
- ggplot2 <3.3.0 的注释使用
stat(count)
而不是 after_stat(count)
。
您可以在 "Computed Variables" 部分下的 ?geom_density()
文档中找到这些技巧。
我想绘制一些东西 "between" 直方图和密度图。这是一个例子:
library(ggplot2)
set.seed(1)
f1 <- rep(1, 100)
v1 <- rnorm(100)
df1 <- data.frame(f1, v1)
f1 <- rep(2, 10)
v1 <- (rnorm(10)+1*2)
df2 <- data.frame(f1, v1)
df <- rbind(df1, df2)
df$f1 <- as.factor(df$f1)
ggplot(df, aes(x = v1, colour = f1)) +
geom_density(position="identity", alpha = 0.6, fill = NA, size = 1)
您会看到每条曲线下的面积为 1.0,这对于密度来说是可以的。但请注意,第二个分布仅由 10 个观察值组成,而不是第一个分布的 100 个。我想要的是曲线 2 下的面积反映了这一点,例如是曲线 1 的十分之一。谢谢。
您可以使用 stat_density
的计算变量,称为 count
。
ggplot(df, aes(x = v1, colour = f1)) +
geom_density(position="identity", alpha = 0.6, fill = NA, size = 1,
aes(y = after_stat(count)))
- ggplot2 <3.3.0 的注释使用
stat(count)
而不是after_stat(count)
。
您可以在 "Computed Variables" 部分下的 ?geom_density()
文档中找到这些技巧。