日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

network3D: 交互式桑基图

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 network3D: 交互式桑基图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

桑基圖(Sankey diagram),即桑基能量分流圖,也叫桑基能量平衡圖。它是一種特定類型的流程圖,圖中延伸的分支的寬度對應數據流量的大小,通常應用于能源、材料成分、金融等數據的可視化分析。

也可以視為一種層級網絡圖,比如展示上一篇文章中的生物信息課程網絡圖;也可以展示菌群隨時間變化的趨勢,如3分和30分文章差距在哪里文章所示哈扎人腸道菌群的季節變化規律。

下面將用2個例子,以我們生物信息研討班涉及的學習框架和課程分配為示例數據,展示如何用常見網絡圖數據繪制桑基圖。

最簡單桑基圖

第一列為上游,第二列為下游,第三列為聯通值,值越大線越粗。如果您自己有數據,只需要替換輸入部分,后面數據格式轉換代碼是通用的。

network <- "Src;Target;Value Bioinfo;Biology;20 Bioinfo;Math;20 Bioinfo;Program;20 Bioinfo;NGS;20 Program;Linux;8 Program;Python;8 Program;R;6 NGS;RNAseq;1 NGS;ChIPseq;1 NGS;m16Sseq;1 NGS;Metagenome;1 NGS;SingeCellSeq;1 NGS;DNAmethylseq;1 NGS;lncRNA;1 NGS;Exomeseq;1 NGS;TCGA;1 "network <- read.table(text=network, sep=";", header=T, row.names=NULL, quote="", comment="")network <- network[,1:3] colnames(network) <- c("Src", "Target", "Value")# 轉換原始數據點為0起始的一系列整數表示 factor_list <- sort(unique(c(levels(network$Src), levels(network$Target)))) num_list <- 0:(length(factor_list)-1) levels(network$Src) <- num_list[factor_list %in% levels(network$Src)] levels(network$Target) <- num_list[factor_list %in% levels(network$Target)]network$Src <- as.numeric(as.character(network$Src)) network$Target <- as.numeric(as.character(network$Target))attribute <- data.frame(name=c(factor_list))

network

Src Target Value?

1 ? ? ?2 ? ?20?

1 ? ? ?8 ? ?20?

1 ? ? 11 ? ?20

1 ? ? 10 ? ?20?

11 ? ? ?6 ? ? 8?

11 ? ? 12 ? ? 8

attribute

head(attribute[, 1])?

[1] 16Sseq Bioinfo Biology ChIPseq? DNAmethylseq?

[6] Exomeseq

sankeyNetwork(Links = network, Nodes = attribute,Source = "Src", Target = "Target",Value = "Value", NodeID = "name",fontSize= 12, nodeWidth = 30)

點線分組桑基圖

網絡數據比上一步的桑基圖多一列,指示線的屬性;再提供一個節點分組信息文件,獲得層次更鮮明的桑基圖。

只需要修改對應的數據,后面格式轉換的代碼通用。

network <- "Src;Target;Value;Link_Grp Bioinfo;Biology;20;Main Bioinfo;Math;20;Main Bioinfo;Program;20;Main Bioinfo;NGS;20;Main Program;Linux;8;Sub Program;Python;8;Sub Program;R;6;Sub NGS;RNAseq;1;Sub NGS;ChIPseq;1;Sub NGS;16Sseq;1;Sub NGS;Metagenome;1;Sub NGS;SingeCellSeq;1;Sub NGS;DNAmethylseq;1;Sub NGS;lncRNA;1;Sub NGS;Exomeseq;1;Sub NGS;TCGA;1;Sub "network <- read.table(text=network, sep=";", header=T, row.names=NULL, quote="", comment="")network <- network[,1:4] colnames(network) <- c("Src", "Target", "Value", "Link_Grp")factor_list <- sort(unique(c(levels(network$Src), levels(network$Target)))) num_list <- 0:(length(factor_list)-1) levels(network$Src) <- num_list[factor_list %in% levels(network$Src)] levels(network$Target) <- num_list[factor_list %in% levels(network$Target)]network$Src <- as.numeric(as.character(network$Src)) network$Target <- as.numeric(as.character(network$Target))# 只需要前兩列 attribute <- "name;group;size Bioinfo;Class;4 Biology;Class;4 Math;Class;4 Program;Class;4 NGS;Class;4 Linux;On;2 Python;Off;2 R;Off;2 RNAseq;Off;1 ChIPseq;On;1 16Sseq;On;1 Metagenome;On;1 SingeCellSeq;InPrepare;1 DNAmethylseq;InPrepare;1 lncRNA;InPrepare;1 Exomeseq;InPrepare;1 TCGA;InPrepare;1"attribute <- read.table(text=attribute, sep=";", header=T, row.names=NULL, quote="", comment="") attribute <- attribute[,1:2] colnames(attribute) <- c("name", "group") attribute <- attribute[match(factor_list, attribute$name),]sankeyNetwork(Links = network, Nodes = attribute,Source = "Src", Target = "Target",Value = "Value", NodeID = "name",NodeGroup = "group", LinkGroup = "Link_Grp",fontSize= 14, nodeWidth = 30)

桑基圖還有類似的稱為沖擊圖 (alluvial diagram)的展示,具體可見ggalluvial:沖擊圖展示組間變化、時間序列和復雜多屬性alluvial diagram。

說到交互式可視化,還有之前推出的:

  • R語言交互式可視化包CanvasXpress

  • 視頻教程:R語言recharts包繪制交互式圖形

往期精品(點擊圖片直達文字對應教程)

機器學習

后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

總結

以上是生活随笔為你收集整理的network3D: 交互式桑基图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。