ggplot2绘制密度图
密度图可以展示数值型变量的数据分布,在ggplot2中可以使用geom_dendity()功能来实现绘图
1.基础密度图
密度图的绘制只需要输入一个数值型的向量,即可以绘制密度图
require(ggplot2)#加载绘图R包
require(dplyr)#加载数据清洗包
data <- iris
data %>% filter(Sepal.Length>2.5)%>% ggplot(aes(x=Sepal.Length))+
geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8)
结果展示
2.采用theme_ipsum主题格式
hrbrthemes 包提供了一系列的主题可以选择,这些主题可以使你的图像看起来更加专业化。
require(hrbrthemes)#加载主题包
data %>% filter(data[,1]>2.5) %>% ggplot(aes(data[,1]))+
geom_density(fill='#62b3a2',color="#e9ecef",alpha=0.7)+
theme_ipsum()
结果展示
3.镜面密度图
镜面密度图的绘制需要使用y = -…density…来实现。
data1 <- data.frame(
var1 = rnorm(1000),
var2 = rnorm(1000, mean=2)
)
ggplot(data1,aes(x=x))+
geom_density(aes(x=var1,y=..density..),fill="#69b3a2")+
geom_label(aes(x=4.5,y=0.25,label='variable1'))+
geom_density(aes(x=var2,y=-..density..), fill= "#404080")+geom_label(x=4.5,y=-0.25,label='variabel2')+
theme_ipsum()
结果展示
4.多组别的密度图
多组别的密度图的绘制需要fill映射分组变量来实现
require(viridis)#色彩调整的R包
require(tidyr)#数据清理的R包
data3 <- diamonds
ggplot(data3,aes(x=price,group=cut,fill=cut))+
geom_density(alpha=0.3,adjust=1.5)+
theme_ipsum()
结果展示
当你的透明度没有调整的时候,你的图像的重叠部分将会被覆盖。
ggplot(data3,aes(x=price,group=cut,fill=cut))+
geom_density(alpha=1,adjust=1.5)+
theme_ipsum()+
scale_fill_viridis(discrete = T)+
scale_color_viridis_d()
结果展示
5.facet_wrap()绘制密度图
facet_wrap()可以根据因子水平来绘制在不同因子水平上相应变量的密度图。
ggplot(data3,aes(x=price,group=cut,fill=cut))+
geom_density(alpha=1,adjust=1.5)+
theme_ipsum()+
scale_fill_viridis(discrete = T,alpha = 0.3)+
scale_color_viridis_d()+
facet_wrap(~cut)
结果展示
6.堆积密度图
当你想将你的数据的密度堆积在一起查看不同因子水平的相对情况时,这会是一个不错的选择,但是这样做,也将看不到不同因子水平下数据的分布情况。position='fill’可以实现对密度图的堆积。
ggplot(data3,aes(x=price,group=cut,fill=cut))+
geom_density(alpha=1,adjust=1.5,position = 'fill')+
theme_ipsum()+
scale_fill_viridis(discrete = T,alpha = 0.3)+
scale_color_viridis_d()
结果展示
参考来源:https://r-graph-gallery.com/