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

R相关小教程链接:

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

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

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

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

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

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

Different types of 2d density chart. Source

98ef955a2a14f432cecadc7e34b20066.png

Density 2d

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

78338014fbbbb073f6c2ba1702e25ac0.png

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

03ddaa373f4109819787d503eed93b42.png

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

0f1973b3809069553d026f512442b62e.png

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

0f1973b3809069553d026f512442b62e.png

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

dc9157bf9673bd2c5e102f877875db02.png

# Librarylibrary(tidyverse) # Dataa

2d Histogramwith geom_bin2d()

f3100808b193d60f044552b34678a50d.pngf95b9a73b9da611d28069e71f1731570.png

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

9e83d952012aec3521eddcdbc4cdd343.pngd80917a7213515fc902c442ec46acfb3.png

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

f2a5978c9152a95716f85ef32fcf0ad9.png8570daa3d620a6ccdb72a95da0e95f9e.pngc5889e73ed5917d28ea359d5d93d6310.png66fa455d8e23571189d47620237e1934.png

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

7cc9f04423eb1687c55b3ab454af0eb2.png453a0b825bf7e684f5b47503952d8100.pngb68a2e6ce0e156f4f2b30f5816350542.png

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

98ef955a2a14f432cecadc7e34b20066.png

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

Hexbin chart and scatterplot with ggplot2

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

c9d8d0a8aa18f025b45066bc9bcf67fe.png

# 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

a76e063061c2e90eb3a9ee45668c3d25.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 找质数的个数_用Python打造一款文件搜索工具,所有功能自己定义!

一、前言大家好,又到了Python办公自动化系列。在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将基于几个常见的搜索操作讲…

nessus安装_Nessus忘记密码怎么办?

最近公司购买了Nessus,才安装好,然后隔天密码就忘了,唉,人老了呀,记性不行了。网上看了一下,还是有比较多的同学也遇到这个问题,现将密码重置方法,分享给大家。系统环境:操作系统&am…

graphpad prism画折线图_如何用Graphpad Prism 8作折线图

如何用Graphpad Prism 8作折线图如何用Graphpad Prism 8作折线图Prism 8 有8种数据类型,Prism数据表的格式决定可制作的图表种类和可执行的分析类型。选择一个数据表格式可以使Prism创建合适数据的数据表,然后创建所需的图形,执行适当的分析。…

sqlserver可视化工具_数据分析之基础分析工具篇(修订版)

原创:海峰996已经火了,你正在经历996吗,怎样才能避免,而又能在职场立足,工作效率是关键,那么先从选对工具开始吧。进入数据时代,大家都会进行或多或少的数据分析,那么现在的你正在使…

windows下python环境搭建_Linux/Windows下Python环境搭建步骤

Python环境搭建首先到官网(www.python.org)下载相应的安装版本。主要分为Windows和Linux两种: 一、Linux下Python环境搭建 一般情况下,Linux系统都已经预安装好Python,但是版本都比较低,需要安装新的版本方…

oracle 同一列数据不同条件分组求和_艾瑞教育:有关Oracle数据库,你需要知道的几件事...

Oracle一、Oracle数据库在存储过程中,如何在字符串中使用变量?例:select to_char(sysdate,yyyymmdd) into v_yyyymmdd from dual;execute immediate(create table tableName_bk_ || v_yyyymmdd || as select * from TableName);将B表中符合关联条件的A…

网络多人游戏架构与编程 电子书_Java互联网架构-高性能网络编程必备技能IO与NIO阻塞分析...

欢迎关注头条号:java小马哥周一至周日早九点半!下午三点半!精品技术文章准时送上!!!精品学习资料获取通道,参见文末一、概念NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同…

python能制作游戏吗_没有Python不能做的游戏,这些游戏都可以做

简介:Python编程语言的强大,几乎是众所周知的!那么,下面我给大家介绍一下几个用Python实现的各种游戏吧。不仅能用来做web、爬虫、数据分析等,没想到还能用做这么多的游戏,实在令人惊讶不已。注意:以下介绍…

vba excel 退出编辑状态_偷梁换柱之EXCEL编辑保护和VBA隐藏代码保护的解锁

如何解锁EXCEL表格编辑保护和VBA隐藏代码保护?当我们想借用别人的表格发现表格上锁无法编辑又不知道密码时或者当我们用软件生成一些表格时往往会遇到“上锁”问题,导致我们无法对表格进行改动。类似下图这样:那怎么才能征服她呢?…

activex for chrome扩展程序 下载”_Chrome扩展程序一键生成网页骨架屏

对于依赖接口渲染的页面,在拿到数据之前页面往往是空白的,为了提示用户当前正在加载中,往往会使用进度条、loading图标或骨架屏的方式。对于前两种方案而言,实现比较简单;本文主要研究骨架屏的应用及实现,并…

dynamo python修改多个参数_python之函数

a.sort()没有返回值。而sorted(a)是有返回值的。Python的标准比较运算符&#xff1a;<、<、 > 、>、 、 !函数用法和底层分析&#xff1a;函数是一个可重用的程序代码块&#xff0c;函数也代表一个任务和功能&#xff08;function&#xff09;,是代码复用的通用机制…

javascript进制转换_JavaScript 加减危机——为什么会出现这样的结果?

在日常工作计算中&#xff0c;我们如履薄冰&#xff0c;但是 JavaScript 总能给我们这样那样的 surprise~0.1 0.2 &#xff1f;1 - 0.9 &#xff1f;如果小伙伴给出内心的结果&#xff1a;0.1 0.2 0.31 - 0.9 0.1那么小伙伴会被事实狠狠地扇脸&#xff1a;console.log(0.…

java实现复制粘贴的计算器_软帝学院教你用java编写计算器(三)

教你用java编写计算器(三)import java.awt.Color;import java.awt.Dimension;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax…

php 公众号验证回调方法_如何进行公众号文章收集 两种收集方法详解

大家都知道优质的公众号吸引用户最关键的就是要优质的文章&#xff0c;所以会有专人负责进行公众号文章收集工作&#xff0c;下面我们跟随拓途数据一起来了解一下如何进行公众号文章收集的相关资料吧。 如何进行公众号文章收集方案一&#xff1a;基于搜狗入口 在网上能搜索到的…

mysql保存一个文件怎么打开_悄悄告诉你,MySQL 通过SQL语句导出到Excel的方法-sql文件怎么打开...

执行SQL语句select fullname,time,endtime,closed from chat_archive into outfile c:/xxx.xls注意&#xff1a;因为office默认的是gb2312编码&#xff0c;服务器端生成的很有可能是utf-8编码&#xff0c;此时有几种选择1、把查询出来的结果转换为GB2312格式(字段fullname)sele…

gerber文件怎么导贴片坐标_SMT贴片机在线编程调试

SMT贴片机分为离线编程和在线编程调试&#xff0c;在线编程调试就是在 SMT 贴片机上对离线编程的程序进行优化调试编辑。SMT 贴片机在线编程调试总体上就是两个步骤&#xff0c;一个是离线编程的程序进行编程&#xff0c;然后就是总体检查并备份到贴片机电脑内。一、在 SMT 贴片…

java销售额查询_用JSP+JavaBean开发模式实现一个销售额的查询

数据库使用mysql&#xff0c;如下&#xff1a;vo包的Sales类&#xff1a;package com.vo;public class Sales {public String salestime;public float salesnum;public String getSalestime() {return salestime;}public void setSalestime(String salestime) {this.salestime …

spss数据_怎么建立SPSS数据库、录入数据?

怎么把收集的问卷、测试数据等原始资料转变为“SPSS数据库”&#xff1f;数据包括离散&#xff08;单选题、多选题等&#xff09;、连续&#xff08;年龄、身高、肺活量、人数等&#xff09;两类。以下面四个题目为例&#xff0c;介绍采用SPSS建立数据库的方法&#xff1a;A2.学…

php进度条如何计算,投票最后显示进度条的百分比怎么算

我自己写的一个投票结果显示&#xff0c;其中设定票数最多的那个进度条为100&#xff05;。public class voteresult : System.Web.UI.Page{protected System.Web.UI.HtmlControls.HtmlTableCell td_vote;protected System.Web.UI.HtmlControls.HtmlTable tab_result;private v…

函数的返回值可以不用赋值_C语言学习|函数的应用《一》

C语言为程序的结构提供了函数和模块一、函数的定义与使用《编程之道》中写道&#xff1a;“一个程序应该是灵活自由的、它的子过程就像串在一根线子上的珍珠。”子过程在C语言中被称为”函数“。程序的执行从主函数开始&#xff0c;往复、循环、迭代地调用一个又一个函数。函数…