R語言互動式可視化包CanvasXpress

作者簡介

劉永鑫,博士。2008年和2011年畢業東北農業大學微生物學和作物遺傳育種專業。2014年在中科院遺傳發育所獲生物信息學博士學位,2016年博士後出站留所工作,任宏基因組學實驗室工程師,目前主要研究方向為宏基因組學數據分析方法、培養組學方法優化。2017年7月創辦「宏基因組」公眾號,目前關注人數1.5萬,累計閱讀超百萬。

公眾號:宏基因組(meta-genome)

往期回顧

  • 擴增子圖表解讀-理解文章思路(8種圖型講解)
  • 擴增子分析流程-把握分析細節
  • 擴增子統計繪圖-衝擊高分文章(R繪製8種圖型)
  • 微生物組入門必讀+宏基因組實操課程
  • 宏基因組分析教程
  • 你想要的生信知識全在這—生信寶典
  • 腸道菌群在人體中的作用
  • 看完此片我想把身上的細菌寄生蟲供起來

CanvasXpress包簡介

感謝「宏基因組」群友李海敏推薦CanvasXpress包。

CanvasXpress核心是一個JavaScript語言編寫的庫,主要用於可重複研究。

在R中可以安裝canvasXpress包,使用canvasXpress命令繪製各種各樣的互動式圖形,非常高效方便,實現如下數百種圖形,令你的結果瞬間B格爆滿。

更多介紹和實例,訪問官網:canvasxpress.org/html/i

源代碼、安裝及使用示例詳見 Github: github.com/neuhausi/can

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小程序,可以網頁中進入坐標軸選擇組合展示數據,圖中可用滾輪縮放圖片區域。

更多學習資源和最新的軟體教程,詳見其官網:canvasxpress.org

學習16S擴增子、宏基因組科研思路和分析實戰,關注「宏基因組」

weixin.qq.com/r/CCmBmV3 (二維碼自動識別)


推薦閱讀:

TAG:R編程語言 | 數據可視化 |