R語(yǔ)言中igraph包的用法(鄰接矩陣)
先導(dǎo)入igraph包:
library(igraph)
graph包最簡(jiǎn)單的用法就是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)的鄰接矩陣表示,仍以上圖為例:
則對(duì)1,1有l(wèi)oop,與2有條edge,與5有一條edge,所以鄰接矩陣的第一行為(1,3,0,0,1);
類(lèi)似地,可以得出鄰接矩陣的第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語(yǔ)言學(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 有無(wú)方向 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)可以用來(lái)查看網(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 #但問(wèn)題是怎么將里面的數(shù)據(jù)提取出來(lái)放到變量里面呢? #節(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" #查看類(lèi)型可知是list class(get.vertex.attribute(g)) [1] "list" #剩下的就簡(jiǎn)單了 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" #類(lèi)型是matrix矩陣可以直接使用 class(get.edgelist(g)) [1] "matrix"
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言正態(tài)分布的實(shí)現(xiàn)示例
R語(yǔ)言中正態(tài)分布包括四個(gè)主要函數(shù):rnorm、dnorm、pnorm、qnorm,分別用于生成隨機(jī)數(shù)、計(jì)算概率密度、累積概率和計(jì)算分位數(shù),本文就來(lái)詳細(xì)的介紹一下具體用法,感興趣的可以了解一下2024-10-10R語(yǔ)言生成隨機(jī)數(shù)實(shí)例講解
這篇文章主要介紹了R語(yǔ)言生成隨機(jī)數(shù)實(shí)例講解,文中圖文講解的很清晰,有需要的同學(xué)可以參考下2021-03-03R語(yǔ)言繪圖公式與變量對(duì)象混合拼接實(shí)現(xiàn)方法
這篇文章主要為大家介紹了R語(yǔ)言繪圖中的公式如何與變量對(duì)象混合拼接的實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11R語(yǔ)言中cbind、rbind和merge函數(shù)的使用與區(qū)別
這篇文章主要介紹了R語(yǔ)言中cbind、rbind和merge函數(shù)的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作
這篇文章主要介紹了R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言ARMA模型的參數(shù)選擇說(shuō)明
這篇文章主要介紹了R語(yǔ)言ARMA模型的參數(shù)選擇說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04詳解R語(yǔ)言中的表達(dá)式、數(shù)學(xué)公式、特殊符號(hào)
這篇文章主要介紹了詳解R語(yǔ)言中的表達(dá)式、數(shù)學(xué)公式、特殊符號(hào),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03R語(yǔ)言基本畫(huà)圖函數(shù)與多圖多線(xiàn)的用法
這篇文章主要介紹了R語(yǔ)言基本畫(huà)圖函數(shù)與多圖多線(xiàn)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03