R语言ggplot绘图基础—密度图的绘制

R语言ggplot绘图基础—密度图的绘制

密度图是直方图的平滑版本,用于计算并绘制数据的核密度估计,能够更好的界定分布的形状。使用geom_density函数可以绘制密度图。

绘制密度图

使用数据如下:

set.seed(1234)
df <- data.frame(
  sex=factor(rep(c("F", "M"), each=200)),
  weight=round(c(rnorm(200, mean=55, sd=5),
                 rnorm(200, mean=65, sd=5)))
  )
head(df)
  sex weight
1   F     49
2   F     56
3   F     60
4   F     43
5   F     57
6   F     58

绘制基础密度图:

library(ggplot2)
# Basic density
p <- ggplot(df, aes(x=weight)) + 
  geom_density()
p
# Add mean line
p+ geom_vline(aes(xintercept=mean(weight)),
              color="blue", linetype="dashed", size=1)

 attachments-2021-09-RMhsCXNp6145a8626d357.png


attachments-2021-09-WJr7Iqw06145a39884fe7.png

 

更改线型和颜色:

# 更改线的颜色和填充
ggplot(df, aes(x=weight))+
  geom_density(color="darkblue", fill="lightblue")
# 更改线型
ggplot(df, aes(x=weight))+
  geom_density(linetype="dashed")

 attachments-2021-09-6q225nhA6145a3be7ebdb.png

 attachments-2021-09-50vHwEW46145a3cccd757.png

绘制分组密度图

计算每组平均数:

library(plyr)
mu <- ddply(df, "sex", summarise, grp.mean=mean(weight))
head(mu)
  sex grp.mean
1   F    54.70
2   M    65.36

绘制分组密度图:

# 更改密度图线的颜色

# 更改密度图线的颜色
ggplot(df, aes(x=weight, color=sex)) +
  geom_density()
# 添加平均数线
p<-ggplot(df, aes(x=weight, color=sex)) +
  geom_density()+
  geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
             linetype="dashed")
p

 attachments-2021-09-AIOswfK46145a3e3f229d.png

attachments-2021-09-L9ZxgwOI6145a3f367ef0.png

也可以使用以下功能手动更改密度打印线颜色:

•scale_color_manual():使用自定义颜色

•scale_color_brewer():使用RColorBrewer包中的调色板

•scale_color_grey():使用灰阶颜色

# 使用自定义颜色
p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# 使用RColorBrewer包中的调色板
p+scale_color_brewer(palette="Dark2")
# 使用灰阶颜色
p + scale_color_grey() + theme_classic()

 attachments-2021-09-yaNvwtlz6145a406b0781.png

 attachments-2021-09-xTvFXJik6145a41431602.png

attachments-2021-09-ZAD7wZ2z6145a4209f21c.png

更改填充颜色:

# 按组更改密度图颜色
ggplot(df, aes(x=weight, fill=sex)) +
  geom_density()
# 使用半透明填充
p<-ggplot(df, aes(x=weight, fill=sex)) +
  geom_density(alpha=0.4)
p
# 添加平均数线
p+geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
             linetype="dashed")

 attachments-2021-09-gYDcYPoF6145a5aa8de1f.png

 attachments-2021-09-nVY5Gb8W6145a5d291e81.png

 attachments-2021-09-AcIl10z06145a5f0a5397.png


也可以使用以下功能手动更改密度图填充颜色:

•scale_fill_manual():使用自定义颜色

•scale_fill_brewer():使用RColorBrewer包中的调色板

•scale_fill_grey():使用灰阶颜色

# 使用自定义颜色
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# 使用RColorBrewer包中的调色板
p+scale_fill_brewer(palette="Dark2")
# 使用灰阶颜色
p + scale_fill_grey() + theme_classic()

 attachments-2021-09-KN5CZ0al6145a602d49a3.png

 attachments-2021-09-5NCOGF1n6145a6143a6de.png

attachments-2021-09-iRroSKm46145a640d1ae9.png

此外,我们在网易云课堂上有各种教学视频,有兴趣可以了解一下:

1. 文章越来越难发?是你没发现新思路,基因家族分析发2-4分文章简单快速,学习链接:基因家族分析实操课程

2. 转录组数据理解不深入?图表看不懂?点击链接学习深入解读数据结果文件,学习链接:转录组(有参)结果解读转录组(无参)结果解读

3. 转录组数据深入挖掘技能-WGCNA,提升你的文章档次,学习链接:WGCNA-加权基因共表达网络分析

4. 转录组数据怎么挖掘?学习链接:转录组标准分析后的数据挖掘

5. 微生物16S/ITS/18S分析原理及结果解读

6. 更多学习内容:linux、perl、R语言画图,更多免费课程请点击以下链接:

https://study.omicsclass.com/


  • 发表于 2021-09-18 16:21
  • 阅读 ( 8701 )
  • 分类:R

0 条评论

请先 登录 后评论
安生水
安生水

351 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 351 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. rzx 78 文章
  7. 红橙子 78 文章
  8. CORNERSTONE 72 文章