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

8次阅读

共计 2421 个字符,预计需要花费 7 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=23836

咱们应用 R 中的 igraph 包,产生了网络的图形。
然而很难将这些图表放到演讲和文章中,因为图表很难依据须要定制。应用 igraph 中的绘图性能能够失去你想要的后果,但用 ggplot 对工作更有帮忙。所以本文摸索了一种在 ggplot 中创立 igraph 绘图的办法。
 

igraph 图

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

head(data.wide)

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

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

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

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

par(op)

在 ggplot 中创立图形

首先让咱们提取数据,产生右边的网络根本图。GGPLOT 须要数据为数据框,所以提取数据并将其转换为数据框

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

当初咱们有了图中所有节点的坐标,咱们能够在 ggplot 中绘制了

library(ggplot2)

ggplot() +
    geom_point(color="black") + # 在节点四周增加一个彩色的边框
     geom_text(label=species) + # 增加节点的标签 

当初咱们有了正确的节点,画出节点之间的连贯。

get(obs)  # 应用函数取得边信息 

df\[match(from, species)\] # 匹配之前连贯的节点数据框架中的 from 地位。gto <- all\[match(to, specie)\] # 匹配之前连贯的节点数据框中的 to 地位 

而后绘制

ggplot() +
    geom_point(color="black") + # 在节点四周增加一个彩色的边
    geom_text(label=species)) + # 增加节点的标签 

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

ggplot() +
    geom_point(color="black") + # 在节点四周增加一个彩色的边
    geom_text(label=species)) + # 增加节点的标签

      axis.text.x = element_blank(), # 移除 x 轴文字
      axis.text.y = element_blank(), #删除 y 轴文字
      axis.ticks = element_blank(), # 删除轴的刻度线
      axis.title.x = element_blank(), # 删除 X 轴标签
      axis.title.y = element_blank(), # 删除 y 轴标签
      panel.grid.major = element_blank(), #移除次要网格的标签
      panel.grid.minor = element_blank(), #删除 minor-grid 标签 

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

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

 

 grp <-  group\[match( species, species)\] # 将组类型增加到节点数据框中。
ggplot() +
    geom_segment(type=as.factor(type)),color="black") + # 增加线
    geom_point(color="black") + # 在节点四周增加一个彩色的边界。geom_text(label=species)) + # 增加节点的标签
    theme_bw()+ # 应用 ggplot 的黑白主题
    theme(axis.text.x = element_blank(), # 移除 x 轴文字
      axis.text.y = element_blank(), #删除 y 轴文字
      axis.ticks = element_blank(), # 删除轴的刻度线
      axis.title.x = element_blank(), # 删除 X 轴标签
      axis.title.y = element_blank(), # 删除 y 轴标签
      panel.grid.major = element_blank(), #移除次要网格的标签
      panel.grid.minor = element_blank(), #删除 minor-grid 标签 


最受欢迎的见解

1.R 语言动态图可视化:如何、创立具备精美动画的图

2.R 语言生存剖析可视化剖析

3.Python 数据可视化 -seaborn Iris 鸢尾花数据

4.r 语言对布丰投针(蒲丰投针)试验进行模仿和动静

5.R 语言生存剖析数据分析可视化案例

6.r 语言数据可视化剖析案例:摸索 brfss 数据数据分析

7.R 语言动静可视化:制作历史寰球平均温度的累积动静折线图动画 gif 视频图

8.R 语言高维数据的主成分 pca、t-SNE 算法降维与可视化剖析案例报告

9.python 主题 LDA 建模和 t -SNE 可视化

正文完
 0