igraph包是乙個用來解決圖與網路問題以及對其進行視覺化的包,前幾天數學建模做圖論的作業我就是用的這個包,這篇部落格就寫一下如何解決圖論中的最短路問題,最大流問題和最小生成樹問題,以及圖的視覺化。
需要宣告,我是在看了這個文件(密碼為jyhn)之後才寫的這篇部落格,但該文件之中有些內容已經過時
首先自然要建立乙個圖的物件,igraph包中建立圖的物件的函式是
make_graph(edges, ..., n = max(edges), isolates = null,directed = true,dir = directed, simplify = true)
其中edges
引數為邊組成的向量,這個向量中的元素既可以是數字也可以是字元,也可以是literals引數(但不經常用)。比如如果是數字,c(1,2)
表示一條從點1到點2的邊,c(1,2,2,3)
表示兩條邊,一條從1到2,另一條從2到3,注意圖中的點的編號不能用0來命名,否則會報錯,至於原因就不太清楚啦;字母的原理與數字相同
n
為最大邊數,只在edges
引數中的元素是數字的時候有用,但我還是不太清楚這個引數的實質作用是什麼,好像一般情況下用不到。
isolates
為孤立的點組成的向量,但只有在edges
引數中的元素是字元時才有用,比如make_graph(c('a','b','b','c'),isolates = c('d','e'))
這個圖有兩條邊ab,bc,還有兩個孤立的點d和e.
directed
為乙個布林型引數,true
表示有向圖,false
表示無向圖,dir
引數與directed
引數是一樣的,但兩者不能同時出現(為什麼不乾脆去掉乙個。。。汗)。
simplify
引數只有在edges引數使用literals時才有用。
可以用如下語句建立乙個圖的物件
我們有時候研究的有些圖是有權的,怎麼給圖賦權呢library(igraph)
m #建立乙個有向圖
g #建立乙個無向圖
h
圖已經建立好了,怎麼把它畫出來呢?這時候就要用到萬能的graph_attr(g,'weight')
#或g
#也可以用第乙個函式獲得圖的權
graph_attr(g,'weight')#得到g的權
plot()
函式了,plot()
函式是乙個泛型函式,如果第乙個引數是圖物件,那麼它實際上呼叫的是plot.graph()
函式
plot(graph_object,edge.label,vertex.label,...)
edge.label
引數控制點的標籤,
vertex.label
引數控制邊的標籤
...
為plot()
函式原有的控制大小顏色等的引數和plot.graph()
中新增的引數,這些都可以通過幫助文件找到
得到圖的物件之後就可以求解最短路,最小生成樹和最大流問題了。
#求最大流,source為起點,target為終點,capcity為每條邊的最大容量,要注意與邊的順序
#對應graph.maxflow(g,source = 1,target = 8,capacity = graph_attr(g,'weight'))
#會返回乙個列表,裡面有各個需要的值
#求最小生成樹
mst(g,weights = graph_attr(g,'weight'))
#注意:這裡的weights如果預設,則會使用null,並不會使用圖自身的權重,感覺這裡
#略坑
#求最短路
#shortest_paths(graph, from, to = v(graph), mode = c("out", #"all", "in"),
# weights = null, output = c("vpath", "epath", "both"),
# predecessors = false, inbound.edges = false)
#最重要的幾個引數為graph,from,to,weights,from為起點,to為終點,可以缺
#省,如果預設則會計算起點到其他所有點的最短路,weights為權重
shortest_paths(g,1,weights = graph_attr(g,'weight'))
R語言getopt包的使用
1 載入包 library getopt 2 spec matrix c help h 0,logical infile i 1,character outfile o 1,character group.col g 1,integer x.col x 1,integer y.col y 1,int...
r 語言edgr edgeR 包的使用
edger包是進行rna seq資料分析非常常用的乙個r包。該包需要輸入每個基因關於每個樣本的reads數的資料,每行對應乙個基因,每一列對應乙個樣本。建議使用htseq count進行統計,輸出檔案即可直接使用。如果需要算rpkm,需要自己統計基因長度資訊。第一步 構建 dgelist類變數 ed...
包r語言 R語言入門之R包的安裝
install.packages metafor 即可順利安裝該r包。install.packages biocmanager library biocmanager install edger 3 接下來便是安裝源自github 的r包了,它的步驟和安裝源自bioconductor的r包類似,需要...