首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

相关视频

所以本文探索了一种在ggplot中创建igraph绘图的方法。

igraph图

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

head(data.wide)

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

library(igraph)

all?<-?bipartite.projection(inc)

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

在ggplot中创建图形

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

左右滑动查看更多

01

02

03

04

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标签

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O5zSr1MD0j3aAa_japE13Cfg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com