R語言中igraph包的用法(鄰接矩陣)
先導(dǎo)入igraph包:
library(igraph)
graph包最簡單的用法就是graph方法,兩句代碼就完成繪制如下所示,1的loop表示為(1,1),1和2之間有3條edge,表示為(1,2,1,2,1,2)
g <- graph(c(1,1,1,2,1,2,1,2,1,5,2,3,2,4,2,5,3,3,3,4,3,4,3,4,4,5),directed = FALSE) plot(g)
如果用頂點(diǎn)的鄰接矩陣表示,仍以上圖為例:
則對1,1有l(wèi)oop,與2有條edge,與5有一條edge,所以鄰接矩陣的第一行為(1,3,0,0,1);
類似地,可以得出鄰接矩陣的第2、3、4、5行;按列輸入上述矩陣:
cell <- c(1,3,0,0,1,3,0,1,1,1,0,1,1,3,0,0,1,3,0,1,1,1,0,1,0) cell <- matrix(cell,5,5,byrow=T)
使用graph.adjacency方法:
cnames <- c('a','b','c','d','e') g <- graph.adjacency(cell,mode="undirected")plot(g,vertex.label=cnames)#繪出圖像
補(bǔ)充:R語言學(xué)習(xí)-提取igraph的節(jié)點(diǎn)和邊
網(wǎng)絡(luò)分析的時(shí)候,可能需要提取出網(wǎng)絡(luò)中的節(jié)點(diǎn)或者邊,igraph包中其實(shí)提供了很多可用的函數(shù)。
#創(chuàng)建網(wǎng)絡(luò)方法之一:data.frame data<-data.frame(id1=c(1,1,2,3,4,4,5,5,6,6,7,8,8,9,10,5,15,6,7,16),id2=c(2,11,11,12,13,14,15,16,7,15,16,17,18,18,9,19,19,19,19,19)) g <- graph_from_data_frame(data, directed=FALSE) #directed 參數(shù)控制graph 有無方向 g IGRAPH UN-- 16 17 -- + attr: name (v/c) + edges (vertex names): [1] 1 --2 2 --3 3 --4 1 --4 5 --7 5 --6 5 --8 7 --6 7 --8 6 --8 9 --10 9 --13 11--10 11--12 12--13 14--15 1 --16 #圖形顯示 plot(g)
#V(g)和E(g)可以用來查看網(wǎng)絡(luò)g的節(jié)點(diǎn)和邊 V(g) + 16/16 vertices, named: [1] 1 2 3 5 7 6 9 11 12 14 16 4 8 10 13 15 E(g) + 17/17 edges (vertex names): [1] 1 --2 2 --3 3 --4 1 --4 5 --7 5 --6 5 --8 7 --6 7 --8 6 --8 9 --10 9 --13 11--10 11--12 12--13 14--15 1 --16 #但問題是怎么將里面的數(shù)據(jù)提取出來放到變量里面呢? #節(jié)點(diǎn)提取有個(gè)函數(shù)get.vertex.attribute(g) get.vertex.attribute(g) $name [1] "1" "2" "3" "5" "7" "6" "9" "11" "12" "14" "16" "4" "8" "10" "13" "15" #查看類型可知是list class(get.vertex.attribute(g)) [1] "list" #剩下的就簡單了 node<-get.vertex.attribute(g)[[1]] node [1] "1" "2" "3" "5" "7" "6" "9" "11" "12" "14" "16" "4" "8" "10" "13" "15" #至于邊呢?可以使用get.edgelist() get.edgelist(g) [,1] [,2] [1,] "1" "2" [2,] "2" "3" [3,] "3" "4" [4,] "1" "4" [5,] "5" "7" [6,] "5" "6" [7,] "5" "8" [8,] "7" "6" [9,] "7" "8" [10,] "6" "8" [11,] "9" "10" [12,] "9" "13" [13,] "11" "10" [14,] "11" "12" [15,] "12" "13" [16,] "14" "15" [17,] "1" "16" #類型是matrix矩陣可以直接使用 class(get.edgelist(g)) [1] "matrix"
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言繪圖公式與變量對象混合拼接實(shí)現(xiàn)方法
這篇文章主要為大家介紹了R語言繪圖中的公式如何與變量對象混合拼接的實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11R語言中cbind、rbind和merge函數(shù)的使用與區(qū)別
這篇文章主要介紹了R語言中cbind、rbind和merge函數(shù)的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R語言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作
這篇文章主要介紹了R語言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號
這篇文章主要介紹了詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03