R相关小教程链接:

用R构建气泡图案例小教程

【小教程】散点图、饼图怎么在我的文章中完美展示小教程

热图在论文发表中完美呈现小教程

R与密度、函数、变量的微妙关系

北京市计算中心医用数据库建设解决方案

更多内容,请关注“生信会议”公众号

Different types of 2d density chart. Source

Density 2d

2d密度图显示了两个数值变量之间的关系。一个在X轴上,另一个在Y轴上,就像散点图一样。然后,在二维空间的特定区域内观察到的数量被计数并由颜色梯度表示。二维密度图有几种类型:

01

Definition

Definition

此页面专门用于一组图形,允许研究两个定量变量的组合分布。这些图形基本上是众所周知的密度图和直方图的扩展。
对于每个变化,全局概念是相同的。一个变量在X轴上表示,另一个变量在Y轴上表示,就像散射图(1)一样)。然后,计算二维空间特定区域内的观测数,并用颜色梯度表示。形状可以变化:

· 六边形经常被使用,导致一个六边形图表(2)

· 正方形制作2d直方图(3)

· 计算核密度估计也可以得到2d密度图(5)或等高线图(6)

以下是这些不同可能性的概述

# Librariesimport numpy as npimport matplotlib.pyplot as pltfrom scipy.stats import kde

# Create data: 200 points

data = np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 3]], 200)

x, y = data.T

# Create a figure with 6 plot areas

fig, axes = plt.subplots(ncols=6, nrows=1, figsize=(21, 5))

# Everything starts with a Scatterplot

axes[0].set_title('Scatterplot')

axes[0].plot(x, y, 'ko')# Thus we can cut the plotting window in several hexbins

nbins = 20

axes[1].set_title('Hexbin')

axes[1].hexbin(x, y, gridsize=nbins, cmap=plt.cm.BuGn_r)

# 2D Histogram

axes[2].set_title('2D Histogram')

axes[2].hist2d(x, y, bins=nbins, cmap=plt.cm.BuGn_r)

# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents

k = kde.gaussian_kde(data.T)

xi, yi = np.mgrid[x.min():x.max():nbins*1j, y.min():y.max():nbins*1j]

zi = k(np.vstack([xi.flatten(), yi.flatten()]))

# plot a density

axes[3].set_title('Calculate Gaussian KDE')

axes[3].pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.BuGn_r)

# add shading

axes[4].set_title('2D Density with shading')

axes[4].pcolormesh(xi, yi, zi.reshape(xi.shape), shading='gouraud', cmap=plt.cm.BuGn_r)

# contour

axes[5].set_title('Contour')

axes[5].pcolormesh(xi, yi, zi.reshape(xi.shape), shading='gouraud', cmap=plt.cm.BuGn_r)

axes[5].contour(xi, yi, zi.reshape(xi.shape) )# save

plt.savefig("IMG/density2d.png")

02

What for

What for

二维分布是非常有用的,以避免过度绘制在一个散射图。这里有一个例子,显示了超图散点图和2d密度图之间的区别。在第二种情况下,出现了一个非常明显的隐藏模式:

# Librarieslibrary(tidyverse)library(hrbrthemes)library(viridis)library(patchwork)

# Dataset:

a

b

c

data

p1 %  ggplot( aes(x=x, y=y)) +    geom_point(color="#69b3a2", size=2) +    theme_ipsum() +    theme(

legend.position="none"

)

p2

legend.position='none'

)

p1 + p2

03

Variation

Variation

2d发行是一种罕见的值得使用3d的情况。

可以在网格中转换散点图信息,并计算网格每个位置上的数据点的数量。然后,不是用渐变颜色来表示这个数字,表面图使用3d来表示密度比其他的要高。

在这种情况下,3组的位置变得明显:

library(plotly)library(MASS)

# Compute kde2d

kd

# Plot with plotlyplot_ly(x = kd$x, y = kd$y, z = kd$z) %>% add_surface()

03

Variation

Variation

2d发行是一种罕见的值得使用3d的情况。

可以在网格中转换散点图信息,并计算网格每个位置上的数据点的数量。然后,不是用渐变颜色来表示这个数字,表面图使用3d来表示密度比其他的要高。

在这种情况下,3组的位置变得明显:

library(plotly)library(MASS)

# Compute kde2d

kd

# Plot with plotlyplot_ly(x = kd$x, y = kd$y, z = kd$z) %>% add_surface()

一、

2D HISTOGRAM WITH GEOM_BIN2D()

这是经典直方图的二维版本。地块区域被分割成许多小正方形,每个正方形中的点数由其颜色表示。

2d density plot with ggplot2

这篇文章介绍了2d密度图的概念,并解释了如何使用R和ggplot2来构建它。考虑了二维直方图、hexbin图、二维分布等。

The issue with geom_point()

如果你有大量的点,一个2d密度图对于研究两个数值变量之间的关系是有用的。
为了避免重叠(就像旁边的散点图一样),它将地块区域划分为大量的小片段,并表示该片段中的点数。
二维密度图有几种类型。每个都有自己的ggplot2功能。这篇文章描述了所有这些。

# Librarylibrary(tidyverse) # Dataa

2d Histogramwith geom_bin2d()

对于2d直方图,plot area被划分为多个正方形。(这是一个经典的直方图的2d版本)。使用geom_bin_2d()函数调用它。此函数提供了一个bin参数,用于控制要显示的bin的数量。
注意:如果您不相信垃圾箱选项的重要性,请阅读本文。

# 2d histogram with default optionggplot(data, aes(x=x, y=y) ) +  geom_bin2d() +  theme_bw() # Bin size control + color paletteggplot(data, aes(x=x, y=y) ) +  geom_bin2d(bins = 70) +  scale_fill_continuous(type = "viridis") +  theme_bw()

Hexbin chart with geom_hex()

另一种方法是将地块划分为多个六边形:因此称为hexbin图,使用geom_hex()函数制作。
这个函数还提供了bin参数,用于控制每个轴的除数。

# Hexbin chart with default optionggplot(data, aes(x=x, y=y) ) +  geom_hex() +  theme_bw() # Bin size control + color paletteggplot(data, aes(x=x, y=y) ) +  geom_hex(bins = 70) +  scale_fill_continuous(type = "viridis") +  theme_bw()

2d distribution with geom_density_2d or stat_density_2d

由于可以绘制密度图而不是柱状图,因此可以计算2d密度并表示它。ggplot2提供了几种可能性:您可以显示分布或区域的轮廓线,或使用光栅函数:

# Show the contour onlyggplot(data, aes(x=x, y=y) ) +  geom_density_2d() # Show the area onlyggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..level..), geom = "polygon") # Area + contourggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..level..), geom = "polygon", colour="white") # Using rasterggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..density..), geom = "raster", contour = FALSE) +  scale_x_continuous(expand = c(0, 0)) +  scale_y_continuous(expand = c(0, 0)) +  theme(    legend.position='none'  )

Customize the color palette

无论你使用的是2d柱状图、hexbin图还是2d分布,你都可以并且应该自定义图表的颜色。这里有一个使用scale_fill_distiller()函数的建议。您可以在图库的ggplot2部分中看到其他方法。

# Call the palette with a numberggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..density..), geom = "raster", contour = FALSE) +  scale_fill_distiller(palette=4, direction=-1) +  scale_x_continuous(expand = c(0, 0)) +  scale_y_continuous(expand = c(0, 0)) +  theme(    legend.position='none'  ) # The direction argument allows to reverse the paletteggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..density..), geom = "raster", contour = FALSE) +  scale_fill_distiller(palette=4, direction=1) +  scale_x_continuous(expand = c(0, 0)) +  scale_y_continuous(expand = c(0, 0)) +  theme(    legend.position='none'  ) # You can also call the palette using a name.ggplot(data, aes(x=x, y=y) ) +  stat_density_2d(aes(fill = ..density..), geom = "raster", contour = FALSE) +  scale_fill_distiller(palette= "Spectral", direction=1) +  scale_x_continuous(expand = c(0, 0)) +  scale_y_continuous(expand = c(0, 0)) +  theme(    legend.position='none'  )

二、

OTHER EXAMPLES

Hexbin chart with the hexbin package

这篇文章解释了如何使用hexbin包用R构建hexbin图。Hexbin图是一个2d密度图,允许可视化两个数值变量之间的关系。
在显示大型数据集时,散点图很难解释,因为点不可避免地会覆盖图,而且可以??不能单独区分。
bin可以被看作是一个二维的直方图,其中容器的阴影代替了条形的高度。这种技术是在hexbin包中计算的。
这个例子已经由Myles Harrison发表在r -blogger上。

# Packageslibrary(hexbin)library(RColorBrewer) # Create datax

Hexbin chart and scatterplot with ggplot2

这篇文章解释了如何使用R和ggplot2构建一个顶部带有散点图的hexbin图。它是对使用ggplot2的2d密度图页面的一个补充。
此图扩展了使用ggplot2文档的2d密度图中描述的概念。它简单地说明了可以在二维密度图的顶部添加散点图。

# librarylibrary(ggplot2) # datasample_data

培训最新安排:

2020.10.19-23实用生物信息学研讨班

2020.10.27-30生物医学公共数据深度挖掘及应用培训班

2020.11.03-06转录组学专题实操班

2020.11.11-13生物分子互作常用软件实操班

2020.11.18-20微生物组学数据分析与挖掘专题培训班

2020.11.24-27生物信息学Python语言实操班

2020.11.25-27 10X Genomics单细胞转录组测序及多组学数据挖掘技术培训班

2020.12.02-04基因组关联分析技术应用培训班

2020.12-09-11生命科学的数据可视化与科研作图—实用工具与技巧实操班

2020.12.16-18多组学数据分析及挖掘培训班

2020.12.21-23计算机辅助设计—分子模拟与蛋白互作研讨班

2020.12.28-31数据分析与R语言制图实操班

【咨询请联系】

QQ号:2814500767

邮箱:bcc-sxpx@bcc.ac.cn

徐老师 010-59341786,15801436028(微信同号)

员老师 010-59341773,18701529461(微信同号)

技术服务

数据库构建

可提10X空间转录组

10X单细胞转录组

有参(无参)转录组

16S

基因关联分析

蛋白分子对接

同源建模

分子动力学

网络药理学

虚拟筛选等等相关技术服务、以及对应的培训学习

相关业务咨询

王老师:15001065280

邮箱:wangxf@bcc.ac.cn

密度图的密度估计_不同类型的二维密度图小教程相关推荐

  1. python中序列类型是二维元素向量吗_序列类型是二维元素向量,元素之间存在先后关系,通过序号访问。...

    [填空题]MapReduce 计算模式中, Map (映射)的主要任务是:负责输入数据的 . . ,输出 . [多选题]大数据的特征包括( ). [判断题]中断服务过程中如果允许中断嵌套,则优先级高的 ...

  2. python三维图切片提取_详解Python二维数组与三维数组切片的方法

    如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间 ...

  3. R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图

    R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录

  4. FigDraw 25. SCI文章中绘图二维密度图及组合图

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

  5. R语言绘制二维密度图

    R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...

  6. python 密度图_Python-Matplotlib做二维密度分布图

    之前一直想尝试着用Matplotlib绘制计算结果中的二维密度分布图,这样即省去了许多数据处理的麻烦,也方便直接在Linux系统中观察计算的结果.但对Numpy和Maltplotlib的熟练程度还不够 ...

  7. R语言ggplot2可视化2d密度图:可视化二维密度图并将两个二维密度图重叠起来、Overlay two ggplot2 stat_density2d plots

    R语言ggplot2可视化2D密度图:可视化二维密度图并将两个二维密度图重叠起来.Overlay two ggplot2 stat_density2d plots 目录

  8. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  9. 如何使用MATLAB绘制不同类型的二维图形

    如何使用MATLAB绘制不同类型的二维图形 听语音 | 浏览:360 | 更新:2014-11-30 18:10 | 标签:matlab 1 2 3 4 5 分步阅读 如何用MATLAB绘制各种二维图 ...

最新文章

  1. 什么是数据库视图(view),视图(view)优缺点是什么?
  2. 前端javascript实现二进制读写操作
  3. CentOS中使用Docker安装Jenkins
  4. 神仙尬聊!哲学马云VS科技马斯克:生活就该每周工作12小时,开特斯拉玩遍三千城市...
  5. 团队-中国象棋-最终程序
  6. mysql 8.0 yum_CentOS8 安装 MySQL8.0(yum)
  7. gevent开发http服务器与tcp服务器(WSGIServer、StreamServer)
  8. 从中心到边缘,IoT正变为互联网之上的一张大网
  9. 基于Spring Security的认证授权_连接数据库认证_Spring Security OAuth2.0认证授权---springcloud工作笔记128
  10. Hessian HTTP POST访问时,Nginx返回411问题
  11. 新机发布会用鸿蒙吗,鸿蒙操作系统及华为全场景新品发布会即将到来,硬件生态发展有望迎来加速度...
  12. Angular移动工具集要让Web应用有原生的感觉
  13. Docker教程小白实操入门(9)--基于export导出容器与基于import导入一个镜像
  14. 算法48---原子的数量【栈】
  15. Uva 12563 - Jin Ge Jin Qu(01背包)
  16. 软件工程导论——第三章——需求分析
  17. prometheus安装使用
  18. python编码及初体验
  19. android 禁用触摸屏,animation时禁用所有触摸屏交互
  20. 软件开发团队必备管理工具

热门文章

  1. SQL Server 性能优化之——系统化方法提高性能
  2. 软件项目经理应该具备的心态
  3. Android应用开发:CardView的使用及兼容
  4. 新年快乐轮播特效html,基于owl-carousel的卡片水平轮播展示特效
  5. Java bitset转string_将java BitSet保存到DB
  6. css 相同的css属性_CSS中的order属性
  7. java如何遍历combobox_如何通过COMBOBOX设置Java中的框架标题?
  8. java分数表示_表示Java分数的最佳方法?
  9. vue-video-player修改src就会报错_4、修改入口点代码
  10. python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...