前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~

🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~

作者头像
生信漫卷
发布2023-02-24 14:00:25
4990
发布2023-02-24 14:00:25
举报

1写在前面

桑基图Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图,应用场景非常广泛,举个栗子ceRNA调控网络等。😉

本期我们画一个不一样桑基图吧,可视实现动态交互。🤗

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(tidyverse)
library(visNetwork)
library(networkD3)
library(igraph)

3示例数据

本次使用的示例数据是Daniel van der Meulen在1585年收到的信件所组成,包括writer,source, destinationdate。🥰

代码语言:javascript
复制
letters <- read.csv("correspondence-data-1585.csv")

4整理nodes数据

我们将sourcedestination提取出来并去重,整理为nodes文件;😘 同时,我们为每一个城市创建一个ID。😉

代码语言:javascript
复制
sources <- letters %>%
  distinct(source) %>%
  rename(label = source)

destinations <- letters %>%
  distinct(destination) %>%
  rename(label = destination)

nodes <- full_join(sources, destinations, by = "label")%>% 
  rowid_to_column("id")

5整理edges数据

整理edges文件与nodes文件类似;🤒 在此,我们计算一下从source城市到destination城市间的来信次数,定义为weight;🥰 后面我们会以weight定义边的粗细; 最后我们将nodes文件中的ID加入。🤩

代码语言:javascript
复制
edges <- letters %>%  
  group_by(source, destination) %>% 
  summarise(weight = n()) %>% 
  ungroup() %>% 
  left_join(nodes, by = c("source" = "label")) %>% 
  rename(from = id) %>% 
  left_join(nodes, by = c("destination" = "label")) %>% 
  rename(to = id)

edges <- edges %>% 
  dplyr::select(., from, to, weight)

6进一步整理数据

Note! 这里需要注意的是,networkD3输入文件的ID需要从0开始计数。🫠 所以,这里我们需要重新更改一下ID。🌟

代码语言:javascript
复制
nodes_d3 <- mutate(nodes, id = id - 1)
edges_d3 <- mutate(edges, from = from - 1, to = to - 1)

7桑基图

代码语言:javascript
复制
sankeyNetwork(Links = edges_d3, Nodes = nodes_d3, Source = "from", Target = "to", 
              NodeID = "label", Value = "weight", fontSize = 16, unit = "Letter(s)")

最后祝大家早日不卷!~


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4整理nodes数据
  • 5整理edges数据
  • 6进一步整理数据
  • 7桑基图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档