原标题:核密度图的绘制

我们先看一下别人家文章中的核密度图。

那么,怎么做出这样的图呢?这种核密度图到底想表达或表现什么呢?

核密度图的绘制

所谓“眼过千遍不如手过一遍”,数据我们这里用Wikipedia文中的这6个数: −2.1, −1.3,−0.4,1.9,5.1,6.2。我们用ggplot2绘制这6个数的核密度图(两种方法,代码对应下图的p1和p2)、直方图和密度图的组合比较(下图p3),与其“镜像翻转”数列“相加”后新数列的密度图(下图p4,橙色)。代码如下:

> library("ggplot2", lib.loc="~/R/win-library/3.4")

> x

> x

[1] -2.1 -1.3 -0.4 1.9 5.1 6.2

# 载入数据

> p

> p1

> p1

# 第一种画法,利用geom_density()画的核密度图,“面积”可填充颜色(见下图,p1)。这里的adjust用来调整bw(带宽),数值为默认值的倍数。这里geom_density()默认的核函数为Gaussian,关于带宽的解释见下文。

> p2

> p2

# 第二种画法,方法相类似,最后的结果与p1一致,只是不能填充颜色(下图p2)。

> p3

+geom_line(stat ="density",adjust=0.55,color="red",size=1)+xlim(-5,10)

> p3

# 同样的数据,用geom_histogram()画直方图作比较,某种意义上可为bw的调整做参考。

> m

> z

> n

> data

> data

m n

1 1 -8.3

2 1 -6.4

3 1 -2.3

4 1 2.3

5 1 6.4

6 1 8.3

7 2 -2.1

8 2 -1.3

9 2 -0.4

10 2 1.9

11 2 5.1

12 2 6.2

> p1

> w1

> p4

# 将x这列数据乘以负1,从顺序颠倒后与x相加,生成z,z和x组成数据框,绘制分组核密度图,见p4。本文对图表主题,文字不做调整,调整方法见上一篇文章《ggplot2绘图学习笔记分享》,这里不再赘述。

KDE 简介

核密度估计(kernel density estimation,KDE)是根据已知的一列数据(x1,x2,…xn)估计其密度函数的过程,即寻找这些数的概率分布曲线。我们最常见的密度函数莫过于正态分布(也称高斯分布)的密度函数:

而密度估计就是给定一列数据,分布未知的情况下估计其密度函数。

例如上文的6个数据:c(x1 = −2.1,x2 = −1.3, x3 = −0.4, x4 = 1.9, x5 = 5.1, x6= 6.2),我们看下这列数据的“密度”如何。

画频率直方图就是一种密度估计的方法(如下图,组距为2),这里的“密度”(density)可以感性得理解为一个区间(直方图的组距)内数据数量的多少,右图即为这6个数据的密度曲线(这里简称为密度图),它是左图的外轮廓化,数据量越多,直方图的顶点也越接近一条线。

https://en.wikipedia.org/wiki/

直方图和密度图都是一组数据在坐标轴上“疏密程度”的可视化,只不过直方图用条形图显示,而密度图使用拟合后的(平滑)的曲线显示,“峰”越高,表示此处数据越“密集”。“密度”越高,如下图。

https://en.wikipedia.org/wiki/

“核”与“带宽”

核密度估计是用用下面的函数去估计一个分部未知的独立样本的分布:

其中K,也就是“核”(kernel)表示核函数,部分常见的核函数如下图(看到Gaussian的函数是不是觉得很眼熟?另为,R中的kernel 有"gaussian","epanechnikov","rectangular","triangular","biweight","cosine","optcosine")。

公式里的“h”,被称为“带宽” (bandwidth,也写作bw),为平滑参数,可简单理解为直方图的“组距”,带宽越大曲线越平滑,见下图。

小结

核密度估计实际上是表现一组数据的分布情况,转录组中用来展示所有样本基因的表达量丰度分布,将FPKM取对数后替换本文第1部分绘图的数据,即可画出样本中所有基因表达量的分布图。一般情况下,它可用来比较某个样本跟其它样本间的差异。

当然,也可以用于其他的数据分布的分析,除了箱型图,还可考虑核密度图。

想学ggplot2作图的童鞋可以点击“阅读原文”到在线课堂看周老师的视频教程,每个视频都可下载课件和数据。今天的就到这里啦,若觉得本文还不错要记得分享哦~

参考文献:

Hebenstreit, Daniel, et al. "RNA sequencing reveals two major classes of gene expression levels in metazoan cells."Molecular systems biology7.1 (2011): 497.

Shah, Sohrab P., et al. "The clonal and mutational evolution spectrum of primary triple-negative breast cancers."Nature486.7403 (2012): 395-399.返回搜狐,查看更多

责任编辑:

matlab核密度,核密度图的绘制相关推荐

  1. 基于Matlab计算天线阵列方向图和绘制方向图

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  2. FigDraw 22. SCI文章中绘图之核密度及山峦图 (ggridges)

    点击关注,桓峰基因 桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI ...

  3. Python密度和轮廓图绘制--Matplotlib详解

    密度和轮廓图 有些情况下,我们需要在二维图表中使用轮廓或颜色区域来展示三维的数据(可以设想等高线地图或温度分布图).Matplotlib 提供了三个有用的函数来处理这项任务: plt.contour绘 ...

  4. 非局部相似性 matlab,基于引导核聚类的非局部均值图像去噪算法

    非局部均值(nonlocal means, NLM)图像去噪算法是根据图像中存在的大量冗余信息,用非局部自相似性原理抑制噪声的算法.最初的NLM算法由文献[ 在NLM改进算法中,文献[[在相似窗结构张 ...

  5. MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf

    <语音信号处理>仿真作业 院 系 电气与电子工程学院 专业班级 姓 名 学 号 指导教师 2020 年 3 月 作业题目:语音采集与读写 一.目的 (1)了解matlab 采集语音信号的原 ...

  6. matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制

    Matlab画图总结 1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 1.plot()函数 2. 含多个输入参数的plot函数 3. 含选项的plot函数 4. 双纵坐标函数plotyy 1.2 ...

  7. Matlab 一张图绘制在一个figure里,多张图绘制在一个figure里,和多张图分别绘制在一个figure里(多重子图)讲解及代码

    matlab的绘图可以采用直角坐标系.对数坐标系和极坐标等形式.数据点也可用向量或矩阵形式给出,类型可以是实型或复型. 一张图绘制在一个figure里: 以实例和代码讲解:在不同图形窗口下分别绘制出y ...

  8. matlab绘制两个函数,用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ,,matlab怎样同时画出两个函数图...

    导航:网站首页 > 用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ,,matlab怎样同时画出两个函数图 用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ...

  9. MATLAB 矢量图(风场、电场等)标明矢量大小的方法——箭头比例尺及风矢杆图的绘制

    作者: 中国科学院大气物理研究所 律成林 摘要:本文主要讲述了在MATLAB中标明矢量图中矢量大小的方法,其中最主要的方法是绘制箭头比例尺.作为运算速度非常快的软件,MATLAB的一个缺点为缺乏在图窗 ...

最新文章

  1. python数据库安装教程_python MySQLdb Windows下安装教程及问题解决方法
  2. C Runtime Library 的来历
  3. python3小游戏源代码_Python3制作仿“FlappyBird”小游戏|python3教程|python入门|python教程...
  4. 知乎要用AI打造智能社区,专治「答非所问」的瓦力机器人已上线
  5. 曾创下IRR62%的超高战绩的VC离开中国:一切因人而来因人而去
  6. 暴雪:星际2仍在审批 筹划中国电竞联赛
  7. Centos7安装masscan
  8. 决策树注意事项和参数调节
  9. 计算机设置新网络,新买的电脑怎么设置网络连接
  10. ASP.NET MVC5中局部视图的更新
  11. stm32f7网口_【STM32F7】开发篇 - 详解STM32F7 TCPServer工程【申精】
  12. 中国记账软件行业现状规模与应用前景预测报告(2022-2027)
  13. ja_charity模板研究_contin_1
  14. android BroadCastReveceiver
  15. 电脑关闭休眠模式清理 C盘内存
  16. 【干货】 xgboost如何自定义eval_metric ( feval ) ?
  17. mac按键难回弹(按下去软软的)
  18. Event Loop 事件循环简介
  19. OpenCV-Python 霍夫线变换 | 三十二
  20. 高通骁龙410C开发板基础知识

热门文章

  1. NetApp 混合云技术
  2. 猿如意中的【格式工厂】工具的安装与使用教程,格式转换这个工具就够了
  3. u盘raw数据恢复,小牛数据恢复软件
  4. 比较喜欢的十个广告语
  5. 李宁——一切皆有可能
  6. Excel多个空白单元统一复制上方单元内容的操作
  7. Debug: Minkowski undefined symbol; Tensorboard has no attribute ‘version‘
  8. root is not in the sudoers file.  This incident will be reported的解决方案
  9. 高校教师工资管理系统java_基于jsp的高校职工工资管理系统-JavaEE实现高校职工工资管理系统 - java项目源码...
  10. freemarker杂项