照葫芦画图之网络/层级图
2022-02-26 本文已影响0人
生信宝库
说在前面
相信大家在日常科研中需要同时分析多个候选基因,从而进一步揭示这些基因(蛋白)之间的联系时,都会用到各种网络图,其中最著名的就是PPI(蛋白互作);同时,对于不同分类标准下,这些单独的个体,又可能会被分到不同组下,这就需要更复杂的网络图来呈现,如河流图;那么,Immugent今天就来分享一些高分文献中常用的,网络图/层级图的唯美画法。
各位看官,请跟往下看...
网络图代码实现
首先我们先来换一个简单又不失唯美的网络图。
library(tidyverse)
library("navdata")
data("phone.call2")
library(networkD3)
head(phone.call2)
nodes <- phone.call2$nodes
edges <- phone.call2$edges
nodes_d3 <- mutate(nodes, id = id - 1)
edges_d3 <- mutate(edges, from = from - 1, to = to - 1)
forceNetwork(
Links = edges_d3, Nodes = nodes_d3,
Source = "from", Target = "to", # so the network is directed.
NodeID = "label", Group = "id", Value = "weight",
opacity = 1, fontSize = 16, zoom = TRUE
)
图片
当然现在还看不出感觉,是因为这个数据太简单;如果数据量大一点,那么里面会有不一样的感觉。。。。
# Load data
data(MisLinks)
data(MisNodes)
# Plot
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8)
图片
有时,我们除了要展示各个基因之间的调控关系,还需要进一步揭示它们之间调控和被调控的关系,这就需要有方向的调控网络,那么下面我们就来绘制一个有调控箭头的网络图。。。
library("visNetwork")
visNetwork(nodes, edges) %>%
visLayout(randomSeed = 12)
edges <- mutate(edges, width = 1 + weight/5)
visNetwork(nodes, edges) %>%
visIgraphLayout(layout = "layout_with_fr") %>%
visEdges(arrows = "middle") %>%
visLayout(randomSeed = 1234)
图片
图片
层级图代码实现
当我们的数据有不同的分级时,简单的网络图就不够用了,那就需要层级图了。体现不同层级关系的这类图其实有很多种,考虑到每个人的审美不同,小编就分别做一种作为代表供大家自行挑选。
sankeyNetwork(
Links = edges_d3, Nodes = nodes_d3,
Source = "from", Target = "to",
NodeID = "label", Value = "weight",
fontSize = 16, unit = "Letter(s)")
set.seed(123)
hc <- USArrests %>% sample_n(15) %>%
scale() %>% dist() %>%
hclust(method = "complete")
dendroNetwork(hc, fontSize = 15)
radialNetwork(
as.radialNetwork(hc), fontSize = 15
)
diagonalNetwork(
as.radialNetwork(hc), fontSize = 15
)
图片
图片
图片
图片
小结
一图胜千言,特别是绘制出一个好的网络图,可以很清晰的展示我们数据各元素之间的关系,而层级图又可以进一步揭露各个分级下数据之间的关联性,希望本次分享能对大家有用。
大家好啦,本次的推文到此就结束啦,欢迎大家继续关注“生信宝库”的照葫芦画图系列推文,我们后续还会分享很多发表的文章中高颜值图表的画法,敬请期待!