R語言互動式可視化包CanvasXpress
作者簡介
劉永鑫,博士。2008年和2011年畢業東北農業大學微生物學和作物遺傳育種專業。2014年在中科院遺傳發育所獲生物信息學博士學位,2016年博士後出站留所工作,任宏基因組學實驗室工程師,目前主要研究方向為宏基因組學數據分析方法、培養組學方法優化。2017年7月創辦「宏基因組」公眾號,目前關注人數1.5萬,累計閱讀超百萬。
公眾號:宏基因組(meta-genome)
往期回顧
- 擴增子圖表解讀-理解文章思路(8種圖型講解)
- 擴增子分析流程-把握分析細節
- 擴增子統計繪圖-衝擊高分文章(R繪製8種圖型)
- 微生物組入門必讀+宏基因組實操課程
- 宏基因組分析教程
- 你想要的生信知識全在這—生信寶典
- 腸道菌群在人體中的作用
- 看完此片我想把身上的細菌寄生蟲供起來
CanvasXpress包簡介
感謝「宏基因組」群友李海敏推薦CanvasXpress包。
CanvasXpress核心是一個JavaScript語言編寫的庫,主要用於可重複研究。
在R中可以安裝canvasXpress包,使用canvasXpress命令繪製各種各樣的互動式圖形,非常高效方便,實現如下數百種圖形,令你的結果瞬間B格爆滿。
更多介紹和實例,訪問官網:https://canvasxpress.org/html/index.html
源代碼、安裝及使用示例詳見 Github: https://github.com/neuhausi/canvasXpress
canvasXpress安裝及載入
安裝包位於github上,需要devtools工具安裝
# 沒有devtools也需要安裝install.packages(devtools)library(devtools)# 安裝canvasXpressdevtools::install_github(neuhausi/canvasXpress)library(canvasXpress)
繪圖實戰
1. 三維散點圖
# 讀數據文件y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 讀取分組信息z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= " ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 繪製三維散點圖,主要參數為數據、分組、分組列、置信橢圓列、圖表類型以及相關標籤 canvasXpress(data = y, varAnnot = z, colorBy = "Species", ellipseBy = "Species", graphType = "Scatter3D", title = "Iris Data Set", xAxis = list("Sepal.Length"), yAxis = list("Petal.Width"), zAxis = list("Petal.Length"))
看到按分組繪製了三維散點圖,而且添加了分組顏色和橢球形置信區間,我們可以滑鼠托動變換角度,也可點選查看點的坐標
2. 矩陣散點圖
# 讀取數據表y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 分組信息z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= " ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 繪製矩陣散點圖canvasXpress(data = y, varAnnot = z, graphType = "Scatter2D", scatterPlotMatrix = TRUE, colorBy = "Species", showTransition = TRUE)
二維矩陣散點圖展示多條件或因子數據的相關性,點選顯示坐標數據
3. 箱線圖
# 數據文件y <- read.table("http://www.canvasxpress.org/data/cX-iris-dat.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 分組信息x <- read.table("http://www.canvasxpress.org/data/cX-iris-smp.txt", header=TRUE, sep= " ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 繪製箱線圖,按物種分大類,再按變數類型分小類canvasXpress(data = y, smpAnnot = x, graphType = "Boxplot", graphOrientation = "vertical", title = "Iris flower data set", smpTitle = "Species", smpLabelFontStyle = "italic", smpLabelRotate = 90, xAxis2Show = FALSE, afterRender = list(list("groupSamples", list("Species"))))
箱線圖比較組間整體數據分布,組內不同因子間比較
4. 多維熱圖
# 熱圖數據文件y <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 另一個數據矩陣文件y2 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat2.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 第三個數據屬性矩陣,非連續型y3 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat3.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 第四個數據屬性矩陣,非連續型y4 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat4.txt", header=TRUE, sep=" ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 樣品列表x <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-smp.txt", header=TRUE, sep= " ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 變數列表z <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-var.txt", header=TRUE, sep= " ", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)# 四維熱圖繪製:y為熱圖主體,y2為邊框顏色,y3為形狀,y4為大小canvasXpress(data = list(y = y, data2 = y2, data3 = y3, data4 = y4), smpAnnot = x, varAnnot = z, graphType = "Heatmap", guides = TRUE, outlineBy = "Outline", outlineByData = "data2", shapeBy = "Shape", shapeByData = "data3", sizeBy = "Size", sizeByData = "data4")
四個矩陣繪製的熱圖,分別代表圖中顏色、邊框顏色、形狀和大小,滑鼠懸停顯示屬性值
5. 韋恩圖
canvasXpress(vennData = data.frame(AC=456, A=340, ABC=552, ABCD=148, BC=915, ACD=298, BCD=613, B=562, CD=143, ABD=578, C=620, D=592, AB=639, BD=354, AD=257), graphType = "Venn", vennLegend = list(A="List 1", D="List 4", C="List 3", B="List 2"), vennGroups = 4)
四組比較韋恩圖,需要已知15種情況下的信息。滑鼠划過顯示信息,雙擊還可顯示固定信息窗口,窗口也可以托動
交互圖表導出和交互
以第一個三維散圖點圖為例:
導出網頁格式圖片
導入網頁:選擇Export
中的Save as web page
,彈窗中輸入或選擇文件名,如果詢問是否覆蓋,點yes
即可;結束後會顯示是否網頁顯示,選擇Try again
即網頁中打開顯示(windows中可能沒有)。
我們發現右上角存在一組工具箱,它存在非常多的交互功能。
右上角工具箱有4個按扭,分別為保存圖片、移動、探索數據和全屏。其中探索數據中在複雜的操作面板,可以按組、樣品選擇、查找等操作,功能強大,用戶可以自行嘗試挖掘更多功能。
更多實例和資源
vignette查看更多示例
# 顯示該包中所有示例,目前有開始和額外兩類vignette(package = "canvasXpress")# 分別展示每個示例# 初級入門教程,也是上面提到的例子vignette("getting_started", package = "canvasXpress")# 額外示例,包括數據分析過程vignette("additional_examples", package = "canvasXpress")
本文中就是講的此軟體官方教程,主要貢獻是翻譯和講解。
Shiny小程序
更強大的交互實例,使用cxShinyExample
查看
# 展示所有Shiny示例cxShinyExample()# 運行其中一個cxShinyExample(example = "example1")
把數據編寫成shiny小程序,可以網頁中進入坐標軸選擇組合展示數據,圖中可用滾輪縮放圖片區域。
更多學習資源和最新的軟體教程,詳見其官網:http://www.canvasxpress.org
學習16S擴增子、宏基因組科研思路和分析實戰,關注「宏基因組」
http://weixin.qq.com/r/CCmBmV3EmADnrRn693wa (二維碼自動識別)
推薦閱讀: