0
点赞
收藏
分享

微信扫一扫

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度

whiteMu 2022-11-07 阅读 60

我们使用R中的igraph包,产生了网络的图形。
但是很难将这些图表放到演讲和文章中,因为图表很难根据需要定制。使用igraph中的绘图功能可以得到你想要的结果,但用ggplot对工作更有帮助。所以本文探索了一种在ggplot中创建igraph绘图的方法。
 

igraph图

首先,我将带入数据,这是一个物种相对丰度的矩阵。列是物种,每行是一个观测值。下面是数据的浏览

head(data.wide)

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_添加节点

加载igraph库并运行生成网络的前几个步骤


1.  library(igraph)
2. all <- bipartite.projection(inc)

绘制这两幅图产生的图形还可以,但并不美观。


1.  op <- par(mfrow = c(1, 2))
2. plot(obs, layout = layout.fruchterman.reingold,
3. edge.color = "black")
4.
5. par(op)

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_02

在ggplot中创建图形

首先让我们提取数据,产生左边的网络基本图。GGPLOT需要数据为数据框,所以提取数据并将其转换为数据框

  1.  species <- colnames(wide2) ## 添加物种代码
  2.  df ## 显示每个节点的x(V1)和y(V2)坐标。

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_数据_03

现在我们有了图中所有节点的坐标,我们可以在ggplot中绘制了

  1.  library(ggplot2)
  2.   
  3.  ggplot() +
  4.  geom_point( color="black") + # 在节点周围添加一个黑色的边框
  5.  geom_text( label=species ) + # 添加节点的标签

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_数据_04

现在我们有了正确的节点,画出节点之间的连接。

get(obs)  # 使用函数获得边信息

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_05

  1.  df[match(from, species)] # 匹配之前连接的节点数据框架中的 from 位置。
  2.  gto <- all[match(to, specie)] # 匹配之前连接的节点数据框中的to位置

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_06

然后绘制


1.   
2. ggplot() +
3. geom_point(color="black") + # 在节点周围添加一个黑色的边
4. geom_text(label=species)) + # 添加节点的标签

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_数据_07

让我们弄乱主题,删除网格线和轴标签等。


1.  ggplot() +
2. geom_point(color="black") + # 在节点周围添加一个黑色的边
3. geom_text(label=species)) + # 添加节点的标签
4.
5. axis.text.x = element_blank(), # 移除x轴文字
6. axis.text.y = element_blank(), #删除y轴文字
7. axis.ticks = element_blank(), # 删除轴的刻度线
8. axis.title.x = element_blank(), # 删除X轴标签
9. axis.title.y = element_blank(), # 删除y轴标签
10. panel.grid.major = element_blank(), #移除主要网格的标签
11. panel.grid.minor = element_blank(), #删除minor-grid标签
12.

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_08

如果我们想把社区检测算法中的一些元素纳入右边的图中。我们可以把一个组中的元素变成红色,另一个组中的元素变成蓝色。组内的连接将是一条实线,组间的连接将是一条虚线。

  1.  data.frame(sp = names, g=membership) #创建一个物种和组成员的数据框架
  2.  g[match( from, sp )] # 在g数据框中为from和to节点匹配组成员资格

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_数据_09

 

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_10

grp <-  group[match( species, species)] # 将组类型添加到节点数据框中。


1.   
2.
3. ggplot() +
4. geom_segment(type=as.factor(type)),color="black") + # 添加线
5. geom_point(color="black") + # 在节点周围添加一个黑色的边界。
6. geom_text(label=species)) + # 添加节点的标签
7. theme_bw()+ # 使用ggplot的黑白主题
8. theme(
9. axis.text.x = element_blank(), # 移除x轴文字
10. axis.text.y = element_blank(), #删除y轴文字
11. axis.ticks = element_blank(), # 删除轴的刻度线
12. axis.title.x = element_blank(), # 删除X轴标签
13. axis.title.y = element_blank(), # 删除y轴标签
14. panel.grid.major = element_blank(), #移除主要网格的标签
15. panel.grid.minor = element_blank(), #删除minor-grid标签
16.
17.

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_r语言_11

拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度_添加节点_12


举报

相关推荐

0 条评论