前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >edgebundleR一行代码优雅的绘制网络图

edgebundleR一行代码优雅的绘制网络图

作者头像
R语言数据分析指南
修改2023-07-11 13:42:11
修改2023-07-11 13:42:11
4800
举报

欢迎关注R语言数据分析指南

本节来介绍一个R包edgebundleR,其主要作用是用来绘制交互式网络图,非常的简单甚至不用查看帮助文档,一行代码即可绘制网络图。数据+代码已经上传小编2023VIP群,加群的观众老爷请自行下载。

加载R包

代码语言:text
复制
library(tidyverse)
# 安装所需的包 "edgebundleR"
library(edgebundleR)
library(igraph)
library(ggraph)

导入数据

代码语言:txt
复制
d <- read_tsv("data.xls")

igraph绘制网络图

代码语言:text
复制
# 获取重复的集合
sets <- unique(d$Set[duplicated(d$Set)])
# 创建一个长度为sets长度的列表
rel <- vector("list", length(sets))

# 针对每个重复的集合,创建组合数据框

for (i in 1:length(sets)) {

  rel[[i]] <- as.data.frame(t(combn(subset(d, d$Set == sets[i])$ID, 2)))

}

library(data.table)
rel <- rbindlist(rel)
# 从数据框创建图形对象
g <- graph.data.frame(rel, directed = F, vertices = d)
clr <- as.factor(V(g)$Loc)
levels(clr) <- c("#DE9ED6FF", "#709AE1FF", "darkorange")
V(g)$color <- as.character(clr)
# 绘制图形,使用圆形布局,顶点大小为度的5倍,不显示顶点标签
plot(g, layout = layout.circle, vertex.size = degree(g) * 5, vertex.label = NA)

circlize绘制网络图

代码语言:text
复制
# 导入 circlize 包
library(circlize)
# 初始化 circlize 绘图环境,使用数据中的ID作为因子,设置x轴范围为0到10
circos.initialize(factors = as.factor(d$ID), xlim = c(0, 10))
# 创建轨道绘图区域,使用数据中的ID作为因子,设置y轴范围为0到0.5,背景颜色根据图中节点的颜色设定,不显示边界线,轨道高度为0.05
circos.trackPlotRegion(factors = as.factor(d$ID), ylim = c(0, 0.5), bg.col = V(g)$color,bg.border = NA, track.height = 0.05)

# 遍历每一行关系数据
for(i in 1:nrow(rel)) {
  # 在圆环上绘制连接线,起始点为rel[i,1]的ID,y轴为0,终点为rel[i,2]的ID,y轴为0,线的高度为0.4
  circos.link(rel[i,1], 0, rel[i,2], 0, h = 0.4)
}

edgebundle绘制网络图

代码语言:text
复制
edgebundle(g, tension = 0.1, cutoff = 0.5, fontsize = 18, padding = 40)

edgebundle(g)

tension: 边的张力参数,控制边的曲线度。较低的值会产生较直的边,而较高的值会产生更弯曲的边。这里设置为 0.1。

cutoff: 边捆绑的阈值参数,控制捆绑边的密度。较低的值会产生更多的捆绑边,而较高的值会产生较少的捆绑边。这里设置为 0.5。

fontsize: 边标签的字体大小。这里设置为 18。

padding: 边捆绑图的内边距,控制图形的边缘空白区域的大小。这里设置为 40。

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 加载R包
  • 导入数据
  • igraph绘制网络图
  • circlize绘制网络图
  • edgebundle绘制网络图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档