相关视频
所以本文探索了一种在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标签
领取专属 10元无门槛券
私享最新 技术干货