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

R相关小教程链接:

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

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

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

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

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

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

Different types of 2d density chart. Source

密度图的密度估计_不同类型的二维密度图小教程_第1张图片

Density 2d

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

密度图的密度估计_不同类型的二维密度图小教程_第2张图片

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

密度图的密度估计_不同类型的二维密度图小教程_第3张图片

二维分布是非常有用的,以避免过度绘制在一个散射图。这里有一个例子,显示了超图散点图和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

密度图的密度估计_不同类型的二维密度图小教程_第4张图片

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

密度图的密度估计_不同类型的二维密度图小教程_第5张图片

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功能。这篇文章描述了所有这些。

密度图的密度估计_不同类型的二维密度图小教程_第6张图片

# Librarylibrary(tidyverse) # Dataa

2d Histogramwith geom_bin2d()

密度图的密度估计_不同类型的二维密度图小教程_第7张图片 密度图的密度估计_不同类型的二维密度图小教程_第8张图片

对于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()

密度图的密度估计_不同类型的二维密度图小教程_第9张图片 密度图的密度估计_不同类型的二维密度图小教程_第10张图片

另一种方法是将地块划分为多个六边形:因此称为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

密度图的密度估计_不同类型的二维密度图小教程_第11张图片 密度图的密度估计_不同类型的二维密度图小教程_第12张图片 密度图的密度估计_不同类型的二维密度图小教程_第13张图片 密度图的密度估计_不同类型的二维密度图小教程_第14张图片

由于可以绘制密度图而不是柱状图,因此可以计算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

密度图的密度估计_不同类型的二维密度图小教程_第15张图片 密度图的密度估计_不同类型的二维密度图小教程_第16张图片 密度图的密度估计_不同类型的二维密度图小教程_第17张图片

无论你使用的是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上。

密度图的密度估计_不同类型的二维密度图小教程_第18张图片

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

Hexbin chart and scatterplot with ggplot2

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

密度图的密度估计_不同类型的二维密度图小教程_第19张图片

# 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

邮箱:[email protected]

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

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

技术服务

数据库构建

可提10X空间转录组

10X单细胞转录组

有参(无参)转录组

16S

基因关联分析

蛋白分子对接

同源建模

分子动力学

网络药理学

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

相关业务咨询

王老师:15001065280

邮箱:[email protected]

密度图的密度估计_不同类型的二维密度图小教程_第20张图片

你可能感兴趣的:(密度图的密度估计)