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() 函数将网络图渲染为交互式的三维图形,并指定了背景色和节点形状。

相关推荐
QH_ShareHub3 小时前
从 R 到 Python:数据科学生态的“双语”对照手册
开发语言·python·r语言
Yolo566Q3 小时前
环境土壤物理模型HYDRUS1D/2D/3D实践技术应用系统性学习
大数据·开发语言·gpt·学习·arcgis·r语言
知识分享小能手4 小时前
R语言入门学习教程,从入门到精通,R语言流程控制语句(5)
开发语言·学习·r语言
知识分享小能手1 天前
R语言入门学习教程,从入门到精通,R语言数据结构(4)
数据结构·学习·r语言
胖哥真不错2 天前
R实现负二项回归模型项目实战
回归·r语言·毕业设计·项目实战·负二项回归模型
知识分享小能手2 天前
R语言入门学习教程,从入门到精通,R语言入门(3)
开发语言·学习·r语言
赵钰老师3 天前
R语言在生态环境领域中的应用
开发语言·数据分析·r语言
知识分享小能手3 天前
R语言入门学习教程,从入门到精通,集成开发环境RStudio(2)
开发语言·学习·r语言
Biomamba生信基地3 天前
拷贝数变异分析的python实现及R语言对比
python·r语言·生物信息学·单细胞测序
生物信息与育种4 天前
实战总结:用 rMVP 做植物 GWAS 的标准工作流与避坑指南
人工智能·深度学习·职场和发展·数据分析·r语言