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

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

我们使用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标签


相关文章
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
316 0
|
数据采集 监控 网络安全
VMware Cloud Foundation Operations for Networks 9.0.1.0 发布 - 云网络监控与分析
VMware Cloud Foundation Operations for Networks 9.0.1.0 发布 - 云网络监控与分析
532 3
VMware Cloud Foundation Operations for Networks 9.0.1.0 发布 - 云网络监控与分析
|
12月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
12月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
471 4
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
630 5
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
724 2
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
350 2
|
12月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
441 0
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化

热门文章

最新文章