9

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

 2 years ago
source link: https://segmentfault.com/a/1190000040717110
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

原文链接: 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可视化


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK