密度图通常用于展示数据值的分布情况。
本文我们介绍一次性画多个变量的密度图,对比它们的数据分布。ggplot2提供便捷的方式实现。
语法介绍
ggplot(data, aes(x=value, fill=variable)) +
geom_density(alpha=.25)
alpha
参数控制每个密度图的不透明度,值越大越清晰,设置小于1的值可以实现多个图重叠展示效果。下面通过示例进行说明。
测试数据
首先生成三个变量的测试数据集:
library(tibble)
library(ggplot2)
set.seed(1)
#create data
df <- tibble(var1=rnorm(1000, mean=0, sd=1),
var2=rnorm(1000, mean=0, sd=3),
var3=rnorm(1000, mean=3, sd=2))
#view first six rows of data
head(df)
# A tibble: 6 x 3
# var1 var2 var3
# <dbl> <dbl> <dbl>
# 1 -0.626 3.40 1.23
# 2 0.184 3.34 -0.845
# 3 -0.836 -2.61 6.24
# 4 1.60 0.632 4.04
# 5 0.330 0.208 2.89
# 6 -0.820 -4.99 4.39
转换数据
这里利用 tidyr
包转换数据,从宽格式转成长格式:
library(tidyr)
df %>% gather(key="key", value="val", 1:3) -> data
head(data)
# A tibble: 6 x 2
# key val
# <chr> <dbl>
# 1 var1 -0.626
# 2 var1 0.184
# 3 var1 -0.836
# 4 var1 1.60
# 5 var1 0.330
# 6 var1 -0.820
画重叠密度图
现在开始创建密度图:
library(ggplot2)
#create overlaying density plots
ggplot(data, aes(x=val, fill=key)) +
geom_density(alpha=.25)
我们可以调整alpha
参数展示不同的透明度。
ggplot(data, aes(x=val, fill=key)) +
geom_density(alpha=.75)
本文参考链接:https://blog.csdn.net/neweastsun/article/details/121879608