不同類型的二維密度圖小教程

2021-02-21 生信會議

Different types of 2d density chart. Source

2d密度圖顯示了兩個數值變量之間的關係。一個在X軸上,另一個在Y軸上,就像散點圖一樣。然後,在二維空間的特定區域內觀察到的數量被計數並由顏色梯度表示。二維密度圖有幾種類型:

此頁面專門用於一組圖形,允許研究兩個定量變量的組合分布。這些圖形基本上是眾所周知的密度圖和直方圖的擴展。
對於每個變化,全局概念是相同的。一個變量在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")

二維分布是非常有用的,以避免過度繪製在一個散射圖。這裡有一個例子,顯示了超圖散點圖和2d密度圖之間的區別。在第二種情況下,出現了一個非常明顯的隱藏模式:

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

# Dataset:

a <- data.frame( x=rnorm(20000, 10, 1.2), y=rnorm(20000, 10, 1.2), group=rep("A",20000))

b <- data.frame( x=rnorm(20000, 14.5, 1.2), y=rnorm(20000, 14.5, 1.2), group=rep("B",20000))

c <- data.frame( x=rnorm(20000, 9.5, 1.5), y=rnorm(20000, 15.5, 1.5), group=rep("C",20000))

data <- do.call(rbind, list(a,b,c))               

 

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

      legend.position="none"

    )

 

p2 <- ggplot(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)) +  scale_fill_viridis() +  theme(

    legend.position='none'

  )

 

p1 + p2

2d發行是一種罕見的值得使用3d的情況。

可以在網格中轉換散點圖信息,並計算網格每個位置上的數據點的數量。然後,不是用漸變顏色來表示這個數字,表面圖使用3d來表示密度比其他的要高。

在這種情況下,3組的位置變得明顯:

library(plotly)library(MASS)

# Compute kde2d

kd <- with(data, MASS::kde2d(x, y, n = 50))

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

2d發行是一種罕見的值得使用3d的情況。

可以在網格中轉換散點圖信息,並計算網格每個位置上的數據點的數量。然後,不是用漸變顏色來表示這個數字,表面圖使用3d來表示密度比其他的要高。

在這種情況下,3組的位置變得明顯:

library(plotly)library(MASS)

# Compute kde2d

kd <- with(data, MASS::kde2d(x, y, n = 50))

# 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 <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )data <- rbind(a,b,c)  # Basic scatterplotggplot(data, aes(x=x, y=y) ) +  geom_point()

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'  )

Hexbin chart with the hexbin package

這篇文章解釋了如何使用hexbin包用R構建hexbin圖。Hexbin圖是一個2d密度圖,允許可視化兩個數值變量之間的關係。
在顯示大型數據集時,散點圖很難解釋,因為點不可避免地會覆蓋圖,而且可以??不能單獨區分。
bin可以被看作是一個二維的直方圖,其中容器的陰影代替了條形的高度。這種技術是在hexbin包中計算的。
這個例子已經由Myles Harrison發表在r -blogger上。

# Packageslibrary(hexbin)library(RColorBrewer) # Create datax <- rnorm(mean=1.5, 5000)y <- rnorm(mean=1.6, 5000) # Make the plotbin<-hexbin(x, y, xbins=40)my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))plot(bin, main="" , colramp=my_colors , legend=F ) 

Hexbin chart and scatterplot with ggplot2

這篇文章解釋了如何使用R和ggplot2構建一個頂部帶有散點圖的hexbin圖。它是對使用ggplot2的2d密度圖頁面的一個補充。
此圖擴展了使用ggplot2文檔的2d密度圖中描述的概念。它簡單地說明了可以在二維密度圖的頂部添加散點圖。

# librarylibrary(ggplot2) # datasample_data <- data.frame(x_values = 1:100 + rnorm(100,sd=20), y_values = 1:100 + rnorm(100,sd=27)) #plotggplot(sample_data, aes(x_values, y_values)) +  stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) +   geom_point(colour = "white")

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

相關焦點

  • 玻璃膠做模具教程 玻璃膠不同類型特點有哪些
    家庭房屋在裝修辦理時,都會使用到許多物品,有些裝修的物品就算是缺少了,也並不會有很大影響,單在於有些時候,一些物品若是沒有,整個裝修的步驟進行也會非常麻煩,玻璃膠也是一種最不能缺少的物品,玻璃膠不單單是能起到很好的粘連效果,它還可以做模具,那麼玻璃膠做模具教程?玻璃膠不同類型特點有哪些?
  • excel圖表應用技巧:不同類型圖表對數據表現的意義和作用
    Excel圖表類型非常多,並且各類型有相似之處。譬如折線圖和面積圖,都可以用來表達趨勢。那什麼時候更適合用面積圖,什麼時候更適合用折線圖呢?我來看看下面這篇文章吧!學習更多技巧,請收藏關注部落窩教育excel圖文教程。 今天不講技巧,講講每位Excel使用者都無法迴避的問題。
  • 房山科學小常識教程_龍寶小掌門
    房山科學小常識教程,龍寶小掌門,而在網絡教學中,幼兒有機會主動參與學習,從消極的學習轉化為主動地發揮其認知能力,探索知識,發現知識,真正成為學習的主人,實現自我教育使用網絡進行教學,既可以做到面向全體幼兒,又可以按照每一個幼兒的接受能力靈活地安排學習速度,達到因材施教、因人施教的作用,促進了幼兒個性的全面發展,達到優化教學的目的從不同年齡階段的兒童在使用
  • 我的世界煙花製作教程 煙花怎麼製作[多圖]
    > 我的世界煙花怎麼製作,很多玩家都想製作煙火慶祝新年,那麼煙火的製作流程是什麼,下面18183小陳為大家介紹我的世界煙花製作教程,希望能幫助到大家。 我的世界煙花製作教程 做這樣一個自動燃放煙花的裝置,首先我們找到一塊平地。
  • p圖教程|清晰乾淨的眼妝怎麼拍 附修圖教程
    p圖教程|清晰乾淨的眼妝怎麼拍 附修圖教程·經常有妹子問我的眼妝教程怎麼拍的,為什麼我拍出來的眼妝那麼清晰乾淨,而自己拍出來的眼妝都是模糊的,並且顯得眼妝很髒今天就跟你們分享一下我的拍照過程有相機的用相機,沒有的直接用手機後置攝像頭就可以了其實設備真的不是最重要的,重要的是光線,能在自然光下拍當然是最好了,如果光線不足,可以利用自帶燈光的化妝鏡我用的是AMIRO的日光鏡,3檔調光,我平時用的是日光那一檔,跟日光的相似度很高,模擬自然光,顯色準而且不偏光,拍出來的眼妝相對色差會小很多
  • 【C4D教程046】1T、2H、3R三種類型二硫化鉬的畫法
    網上關於MoS2結構的繪圖教程不在少數,我之前也出過一期3DMAX的教程(點擊下方文字可查看)但是這些教程基本上不會告訴你畫的是哪一種MoS2,可能出教程的人自己也不知道MoS2竟然有三種不同的結構(如下圖所示,分別為1T、2H、3R<至於什麼1T'、1T''之類的,此處自動忽略>)。
  • 【Ardunio】開發入門教程【一】簡介+數據類型+開發工具
    *基於創用CC開放原始碼的電路圖設計*基於創用CC開放原始碼的程式開發環境*免費下載,也可依需求自己修改!!遵照姓名標示。 Arduino官方網站(英文):www.Arduino.cc【Ardunio】開發入門教程【二】數據類型Ardunio數據類型boolean布爾char字符byte字節int
  • 手機P圖神器,PicsArt教程
    小夥伴們大家好,這裡是精彩的教程。我自從做了幾次手機教程以後,就不可自拔的愛上了手機P圖,相較於電腦來說,手機實在是太方便了,只要你有靈感,隨時隨地就可以創作,前面講了一個手機APP snapseed很強大,但是不滿足的我經過不懈尋找,今天就再給大家安利一個手機P圖軟體picsart這個軟體擁有更豐富的濾鏡,更多的用法,和snapseed相比各有優點。
  • 抖音跑馬燈動態壁紙設置方法教程分享 海量壁紙類型任您換
    抖音跑馬燈動態壁紙設置方法教程分享 海量壁紙類型任您換時間:2018-03-20 15:26   來源:皮皮網   責任編輯:沫朵 川北在線核心提示:原標題:抖音跑馬燈動態壁紙設置方法教程分享 海量壁紙類型任您換 跑馬燈動態壁紙是抖音裡面現在很火的一款壁紙了,大家想要擁有,但是卻不知道怎麼設置的,下面就讓小編來分享設置的方法吧
  • 【繪畫教程】不同顏色桌布的繪製方法(材質教程)
    【繪畫教程】不同顏色桌布的繪製方法(材質教程) 上次的珍珠的材質教程 很多小夥伴表示喜歡喔 所以今天再分享一個啦 這次是關於桌布材質的 大多數小夥伴會注意到 桌布放置後產生的褶皺
  • 不同類型的焊接接頭
    ▲圖1 焊接在實際中的應用▲圖2 焊接接頭類型1對接接頭對接接頭是通過將位於同一平面上的兩塊板的邊緣或端部焊接在一起的對接接頭▲圖4 對接接頭坡口類型▲圖5 對接接頭焊縫類型2角接接頭角接接頭是通過將兩個表面為
  • 天天P圖全家福怎麼照 全家福使用教程Get
    天天P圖全家福怎麼照 全家福使用教程Get時間:2018-06-09 19:09   來源:今日頭條   責任編輯:沫朵 川北在線核心提示:原標題:天天P圖全家福怎麼照 全家福使用教程Get 天天P圖全家福是 的一個有趣玩法,如果不知道天天P圖全家福怎麼照的話,跟著小編了解下全家福使用教程吧~ 方法一:
  • 集合啦動物森友會qr碼分享及使用教程
    在遊戲中玩家可以通過掃描QR碼來獲取各種不同類型的自定義服裝,那麼都有哪些呢?怎麼用?今天系哦啊辦帶來的就是集合啦動物森友會qr碼分享大全及使用教程,一起來看看吧。 集合啦動物森友會qr碼分享及使用教程 QR碼 小編後續還會第一時間更新更多的QR碼。
  • photoshop教程|UI教程|熟手小圖標
    第二期UI圖標初期教程熟手小圖標|photoshop教程|(以下界面演示以Photoshop CC2018為演示工具)著手練習練習畢竟光看是看不會的你說捏第一步:新建文件,給背景填充你喜歡的顏色,如圖第二步:選擇橢圓形狀工具,拉出一個正圓,添加圖層樣式——漸變疊加,如圖第三步:選擇矩形工具,做出一個小盾牌形狀
  • Graphpad prism7作圖教程|單維度分組散點圖、二維度分組柱形圖
    基於以上,本期就來繼續介紹如何用Graphpad prism畫出單維度分組散點圖與二維度分組柱形圖~(圖源:Ecker et al.,2014)注:由於在以下教程中,數據是不完全引用,因此實際圖與所引用文獻圖片存在部分差異。
  • 詩詞小課堂:「吟誦」中的不同風格與類型
    不同歷史時期所產生的藝術風格有所不同,比如巴洛克時期與浪漫主義時期的音樂作品就是兩種截然不同的風格。吟誦同樣具有不同的風格,可以說它所體現的是一種「個人風格」。比較具有代表性的吟誦如「唐調」、「華調」、「葉調」、「葛調」、「國子監官韻誦唸」等,都是學習者們耳熟能詳的吟誦風格。
  • 軟陶泥手工DIY漂亮小飾品的方法 軟陶飾品製作教程
    聚巧網為大家準備了大量軟陶飾品的手工教程和圖解。軟陶由於軟,很容易被製成許多形狀,然後烘烤變硬,所以,軟陶是雕刻工匠和藝術家經常使用的材質,也經常被用來製作各種不同的飾品。下面介紹的是軟陶手工DIY漂亮飾品的方法,所用的軟陶可以自由搭配顏色,自己喜歡就好。具體如何DIY軟陶飾品,跟著軟陶飾品製作教程一起DIY吧,製作軟陶飾品是非常簡單的哦。1購買幾種不同顏色的軟陶。
  • (圖文版)AE野教程:Particular4.1詳細概述及螺旋線條小案例
    >最後又發現原來現在最新版的已經是4.1了,於是又把4.1的新功能官方教程看了一遍:在這裡囉嗦我學Particular的過程其實只是想給大家分享一些我個人學習方面的觀點:經常有人會說沒教程,不知道怎麼學習,其實只要你有心,就會發現教程多的學都學不完。
  • photoshop教程|UI教程|戰鼓小圖標
    UI圖標初期教程戰鼓小圖標|photoshop教程|(以下界面演示以Photoshop CC2017為演示工具)第二步:塑造鼓身,選擇圓角矩形工具,設置描邊,設置填充,調整圓角大小,如圖第三步:選擇橢圓形狀工具,建立鼓面,如圖第四步:選擇橢圓形狀工具,給鼓添加耳朵,如圖第五步:選擇橢圓形狀工具,圓角矩形工具,給鼓添加鼓錘,如圖第六步:處理小細節
  • C#初學者教程系列4:C 數據類型示例,int、double、string、var
    本文是C#初學者簡單教程,這是第3篇。感謝觀看,記得關注我,後續還有更多教程文章,謝謝。如無特別說明,本系列教程使用的Visual Studio版本為VS2019,.Net Framework版本為4.7.2,.Net Core版本為3.0,.Net Standard為2.1。