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

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

    原文出处:拓端数据部落公众号

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

    igraph图

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

    head(data.wide)

    加载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)

    在ggplot中创建图形

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

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

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

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

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

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

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

    然后绘制

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

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

    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.  
       

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

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

     

     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.  
       


    最受欢迎的见解

    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可视化

    ▍关注我们 【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。 ▍咨询链接:http://y0.cn/teradat ▍联系邮箱:3025393450@qq.com
  • 相关阅读:
    消除共模干扰的方法
    C#模拟键盘事件
    获取本地IP V4 出现::1
    生成ssh密钥
    苹果应用商店DNS修改加快下载速度
    模算术 modular arithmetic
    有限域和质数的幂
    rere
    test
    图信号处理进行大数据分析
  • 原文地址:https://www.cnblogs.com/tecdat/p/15335609.html
Copyright © 2011-2022 走看看