拓端tecdat|R語言社區(qū)檢測算法可視化網絡圖:ggplot2繪制igraph對象分析物種相對豐度
原文鏈接: http://tecdat.cn/?p=23836
原文出處:拓端數據部落公眾號
我們使用R中的igraph包,產生了網絡的圖形。
但是很難將這些圖表放到演講和文章中,因為圖表很難根據需要定制。使用igraph中的繪圖功能可以得到你想要的結果,但用ggplot對工作更有幫助。所以本文探索了一種在ggplot中創(chuàng)建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中創(chuàng)建圖形
首先讓我們提取數據,產生左邊的網絡基本圖。GGPLOT需要數據為數據框,所以提取數據并將其轉換為數據框
species <- colnames(wide2) ?## 添加物種代碼
df ?## 顯示每個節(jié)點的x(V1)和y(V2)坐標。

現在我們有了圖中所有節(jié)點的坐標,我們可以在ggplot中繪制了
library(ggplot2)
ggplot() +
geom_point( color="black") + # 在節(jié)點周圍添加一個黑色的邊框
geom_text( label=species ) + # 添加節(jié)點的標簽

現在我們有了正確的節(jié)點,畫出節(jié)點之間的連接。
get(obs) ?# 使用函數獲得邊信息

df[match(from, species)] # 匹配之前連接的節(jié)點數據框架中的 from 位置。
gto <- all[match(to, specie)] # 匹配之前連接的節(jié)點數據框中的to位置

然后繪制
ggplot() +
geom_point(color="black") + # 在節(jié)點周圍添加一個黑色的邊
geom_text(label=species)) + # 添加節(jié)點的標簽

讓我們弄亂主題,刪除網格線和軸標簽等。
ggplot() +
geom_point(color="black") + # 在節(jié)點周圍添加一個黑色的邊
geom_text(label=species)) + # 添加節(jié)點的標簽
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標簽

如果我們想把社區(qū)檢測算法中的一些元素納入右邊的圖中。我們可以把一個組中的元素變成紅色,另一個組中的元素變成藍色。組內的連接將是一條實線,組間的連接將是一條虛線。
data.frame(sp = names, g=membership) #創(chuàng)建一個物種和組成員的數據框架
g[match( from, sp )] # 在g數據框中為from和to節(jié)點匹配組成員資格

?

grp <- ?group[match( species, species)] # 將組類型添加到節(jié)點數據框中。
ggplot() +
geom_segment(type=as.factor(type)),color="black") + # 添加線
geom_point(color="black") + # 在節(jié)點周圍添加一個黑色的邊界。
geom_text(label=species)) + # 添加節(jié)點的標簽
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語言動態(tài)圖可視化:如何、創(chuàng)建具有精美動畫的圖
2.R語言生存分析可視化分析
3.Python數據可視化-seaborn Iris鳶尾花數據
4.r語言對布豐投針(蒲豐投針)實驗進行模擬和動態(tài)
5.R語言生存分析數據分析可視化案例
6.r語言數據可視化分析案例:探索brfss數據數據分析
7.R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖
8.R語言高維數據的主成分pca、 t-SNE算法降維與可視化分析案例報告
9.python主題LDA建模和t-SNE可視化