R语言绘制分区域网络图

数据和代码获取:请查看主页个人信息!!!

载入R包

复制代码
library('networkdata')
library('ggraph')
library('igraph')
library('graphlayouts')
library('ggforce')

分区域网络图

复制代码
xy <- layout_as_multilevel(multilvl_ex, type = "all", alpha = 25, beta = 45)
ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +
  geom_edge_link0(
    aes(filter = (node1.lvl == 1 & node2.lvl == 1)),
    edge_colour = "firebrick3",
    alpha = 0.5,
    edge_linewidth = 0.3
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl != node2.lvl)),
    alpha = 0.3,
    edge_linewidth = 0.1,
    edge_colour = "black"
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl == 2 &
                    node2.lvl == 2)),
    edge_colour = "goldenrod3",
    edge_linewidth = 0.3,
    alpha = 0.5
  ) +
  geom_node_point(aes(shape = as.factor(lvl)), fill = "grey25", size = 3) +
  scale_shape_manual(values = c(21, 22)) +
  theme_graph() +
  coord_cartesian(clip = "off", expand = TRUE) +
  theme(legend.position = "none")

这段代码使用 ggraph 包创建了一个多级网络图。其中:

  • ggraph() 函数创建了基本的图形,并指定了使用手动布局。

  • geom_edge_link0() 函数用于绘制边,通过 filter 参数指定了不同的边的过滤条件,并设置了颜色、透明度和线宽。

  • geom_node_point() 函数用于绘制节点,通过 lvl 参数指定了节点的级别,设置了节点的形状、填充颜色和大小。

  • scale_shape_manual() 函数手动设置了节点形状的值。

  • theme_graph() 函数设置了图形的主题样式,包括节点和边的样式。

  • coord_cartesian() 函数设置了坐标系的属性,包括剪裁和扩展。

  • theme() 函数进一步调整了图的样式,包括隐藏了图例。

为两个层级分别设置布局

复制代码
xy <- layout_as_multilevel(multilvl_ex,
                           type = "separate",
                           FUN1 = layout_as_backbone,
                           FUN2 = layout_with_stress,
                           alpha = 25, beta = 45
)
​
cols2 <- c(
  "#3A5FCD", "#CD00CD", "#EE30A7", "#EE6363",
  "#CD2626", "#458B00", "#EEB422", "#EE7600")
​
ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +
  geom_edge_link0(aes(
    filter = (node1.lvl == 1 & node2.lvl == 1),
    edge_colour = col
  ),
  alpha = 0.5, edge_linewidth = 0.3
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl != node2.lvl)),
    alpha = 0.3,
    edge_linewidth = 0.1,
    edge_colour = "black"
  ) +
  geom_edge_link0(aes(
    filter = (node1.lvl == 2 & node2.lvl == 2),
    edge_colour = col
  ),
  edge_linewidth = 0.3, alpha = 0.5
  ) +
  geom_node_point(aes(
    fill = as.factor(grp),
    shape = as.factor(lvl),
    size = nsize
  )) +
  scale_shape_manual(values = c(21, 22)) +
  scale_size_continuous(range = c(1.5, 4.5)) +
  scale_fill_manual(values = cols2) +
  scale_edge_color_manual(values = cols2, na.value = "grey12") +
  scale_edge_alpha_manual(values = c(0.1, 0.7)) +
  theme_graph() +
  coord_cartesian(clip = "off", expand = TRUE) +
  theme(legend.position = "none")

这段代码创建了一个多级网络图,并使用了自定义的布局。其中:

  • layout_as_multilevel() 函数将多级网络图转换为多级布局,并指定了不同级别的布局方法和参数。

  • layout_as_backbone()layout_with_stress() 函数分别指定了基本骨架布局和应力布局的参数。

  • ggraph() 函数创建了基本的图形,并指定了手动布局的 x 和 y 坐标。

  • geom_edge_link0() 函数绘制了边,通过 filter 参数指定了不同的边的过滤条件,并设置了颜色、透明度和线宽。

  • geom_node_point() 函数绘制了节点,通过 grp 参数指定了节点的组别,设置了节点的形状、填充颜色和大小。

  • scale_shape_manual()scale_size_continuous()scale_fill_manual()scale_edge_color_manual()scale_edge_alpha_manual() 函数分别手动设置了节点形状、大小、填充颜色、边颜色和边透明度的值。

  • theme_graph() 函数设置了图形的主题样式,包括节点和边的样式。

  • coord_cartesian() 函数设置了坐标系的属性,包括剪裁和扩展。

  • theme() 函数进一步调整了图的样式,包括隐藏了图例。

固定某一层级

复制代码
xy <- layout_as_multilevel(multilvl_ex,
                           type = "fix2",
                           FUN2 = layout_with_stress,
                           alpha = 25, beta = 45
)
​
ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +
  geom_edge_link0(aes(
    filter = (node1.lvl == 1 & node2.lvl == 1),
    edge_colour = col
  ),
  alpha = 0.5, edge_linewidth = 0.3
  ) +
  geom_edge_link0(
    aes(filter = (node1.lvl != node2.lvl)),
    alpha = 0.3,
    edge_linewidth = 0.1,
    edge_colour = "black"
  ) +
  geom_edge_link0(aes(
    filter = (node1.lvl == 2 & node2.lvl == 2),
    edge_colour = col
  ),
  edge_linewidth = 0.3, alpha = 0.5
  ) +
  geom_node_point(aes(
    fill = as.factor(grp),
    shape = as.factor(lvl),
    size = nsize
  )) +
  scale_shape_manual(values = c(21, 22)) +
  scale_size_continuous(range = c(1.5, 4.5)) +
  scale_fill_manual(values = cols2) +
  scale_edge_color_manual(values = cols2, na.value = "grey12") +
  scale_edge_alpha_manual(values = c(0.1, 0.7)) +
  theme_graph() +
  coord_cartesian(clip = "off", expand = TRUE) +
  theme(legend.position = "none")

这段代码创建了一个多级网络图,并使用了固定布局。其中:

  • layout_as_multilevel() 函数将多级网络图转换为多级布局,并指定了固定布局的参数。

  • layout_with_stress() 函数指定了应力布局的参数。

  • ggraph() 函数创建了基本的图形,并指定了手动布局的 x 和 y 坐标。

  • geom_edge_link0() 函数绘制了边,通过 filter 参数指定了不同的边的过滤条件,并设置了颜色、透明度和线宽。

  • geom_node_point() 函数绘制了节点,通过 grp 参数指定了节点的组别,设置了节点的形状、填充颜色和大小。

  • scale_shape_manual()scale_size_continuous()scale_fill_manual()scale_edge_color_manual()scale_edge_alpha_manual() 函数分别手动设置了节点形状、大小、填充颜色、边颜色和边透明度的值。

  • theme_graph() 函数设置了图形的主题样式,包括节点和边的样式。

  • coord_cartesian() 函数设置了坐标系的属性,包括剪裁和扩展。

  • theme() 函数进一步调整了图的样式,包括隐藏了图例。

三维网络图可视化

复制代码
library(threejs)
xyz <- layout_as_multilevel(multilvl_ex,
                            type = "separate",
                            FUN1 = layout_as_backbone,
                            FUN2 = layout_with_stress,
                            project2D = FALSE)
multilvl_ex$layout <- xyz
V(multilvl_ex)$color <- c("#00BFFF", "#FF69B4")[V(multilvl_ex)$lvl]
V(multilvl_ex)$vertex.label <- V(multilvl_ex)$name
​
graphjs(multilvl_ex, bg = "black", vertex.shape = "sphere")

这段代码使用了 threejs 包来创建一个交互式的三维网络图。其中:

  • layout_as_multilevel() 函数将多级网络图转换为多级布局,并指定了不同级别的布局方法和参数。

  • layout_as_backbone()layout_with_stress() 函数分别指定了基本骨架布局和应力布局的参数。

  • project2D = FALSE 参数指定了不将布局投影到二维空间,而是保持在三维空间中。

  • V(multilvl_ex)$colorV(multilvl_ex)$vertex.label 分别为网络中的节点指定了颜色和标签。

  • graphjs() 函数将网络图渲染为交互式的三维图形,并指定了背景色和节点形状。

相关推荐
让学习成为一种生活方式1 小时前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
有梦想的Frank博士1 天前
R语言*号标识显著性差异判断组间差异是否具有统计意义
开发语言·信息可视化·r语言
逆风远航4 天前
R语言贝叶斯:INLA下的贝叶斯回归、生存分析、随机游走、广义可加模型、极端数据的贝叶斯分析
开发语言·r语言·贝叶斯·生态学·结构方程·环境科学·混合效应
Faxxtty4 天前
【R语言】解决package ‘qvalue’ is not available (for R version 3.6.1)
开发语言·r语言
Cachel wood5 天前
Vue前端框架:Vue前端项目文件目录
java·前端·vue.js·python·算法·r语言·前端框架
邢博士谈科教6 天前
OmicsTools软件和R语言分析环境安装配置答疑汇总最新版
r语言
纪伊路上盛名在6 天前
vscode中提升效率的插件扩展——待更新
linux·服务器·ide·vscode·python·r语言·编辑器
拓端研究室TRL6 天前
银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等...
python·决策树·机器学习·数据挖掘·r语言
在在进步6 天前
R数据结构&向量基础
数据结构·r语言
琼火hu8 天前
R语言笔记(五):Apply函数
开发语言·笔记·r语言·apply