千家信息网

如何利用ggplot2绘制直方图

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍如何利用ggplot2绘制直方图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!利用ggplot2绘制直方图,基于几何对象geom_histogram()函数ge
千家信息网最后更新 2025年01月19日如何利用ggplot2绘制直方图

这篇文章主要介绍如何利用ggplot2绘制直方图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

利用ggplot2绘制直方图,基于几何对象geom_histogram()函数

geom_histogram(mapping = NULL, data = NULL, stat = "bin",  position = "stack", ..., binwidth = NULL, bins = NULL, na.rm = FALSE,  show.legend = NA, inherit.aes = TRUE)


其中mapping图形属性映射涉及多个,需统计的数据映射到X轴,Y轴映射统计类型(包括频数count 或频率density等),还涉及其他的图像属性等。

统计变换 stat="bin",对应要设置组距间隔 binwidth大小,由此统计该组间间隔内的频数情况或频率情况

现利用数据绘制直方图,同时将绘图中计算得到的count添加到柱子上。

数据基本情况:

> head(dat)         ID         CK1 AT1G01010   3.5815902 AT1G01020   5.0367753 AT1G01030   5.0353804 AT1G01040   2.6927165 AT1G01046   0.0000006 AT1G01050 114.336000> dim(dat)[1] 32483     2

数据第二列CK 表示基因表达量FPKM,再次进行转换log10(CK)进行绘图

基础代码:

p=ggplot(dat,aes(x=log10(CK)))+geom_histogram(stat="bin",binwidth = 1)+xlim(-3,5)print(p)

其y轴默认count类型,不做设置是等同于 aes(y=..count..),对应频数类型

注意书写方式 该数值为统计变换所得衍生,故前后各有两点

p=ggplot(dat,aes(x=log10(CK),y=..count..))+geom_histogram(stat="bin",binwidth = 1)+xlim(-3,5)print(p)

进行文字添加则利用geom_text函数,其aes(label)需由..count..映射,同时在stat 和binwidth的设置必须和此前一致,方可在图片上添加计算到的频数

p=p+geom_text(aes(label=as.character(..count..)),stat="bin",binwidth=1,vjust=-0.5)print(p)

频率图绘制及density数值添加过程类似:1、aes(y=..density) 2、统计变换等一致 3、density 仅保留两位小数利用round()

p=ggplot(dat,aes(x=log10(CK),y=..density..))+geom_histogram(stat="bin",binwidth = 1)+xlim(-3,5)p=p+geom_text(aes(label=as.character(round(..density..,2))),stat="bin",binwidth=1,vjust=-0.5)print(p)

以上是"如何利用ggplot2绘制直方图"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0