2012-10-05 102 views
1
df 

network bus_unit outage 
A  Online  4 
B  Internal 5 
A  Finance 6 
B  IT   5 
A  IT   6 
A  Marketing 40 

我需要馬麗娟一個IGRAPH我可以像這樣做:重新排列中的igraph頂點

g <- graph.data.frame(df) 
plot(g, 
    layout = layout.fruchterman.reingold, 
    vertex.label = V(g) $name, 
    vertex.label.color= "black", 
    edge.arrow.size=1, 
    edge.curved=FALSE, 
    edge.label=df$outage) 

我的問題是,我喜歡展示該網絡的自ontop的曲線圖它是罪魁禍首。無論如何組織這個igraph,移動頂點的周圍等。

感謝您的幫助。

+0

http://lists.gnu.org/archive/html/igraph-help/2012-10/msg00030.html –

回答

2

當你通過layout = layout.fruchterman.reingoldplot(),你給它一個構建佈局的函數。但您也可以設置以外的plot()並直接操作它 - 這是一個簡單的座標矩陣。

# Create an initial layout 
bad.a.layout <- layout.fruchterman.reingold(g) 

# ... it's really just a matrix of coordinates, with each row 
# corresponding to a vertex 
bad.a.layout 
plot(g, layout = bad.a.layout) 

# Tweak arbitrarily - e.g., bump Network A nodes up a bit on the y-axis 
bad.a.layout[V(g)$network %in% "A", 2] <- bad.a.layout[V(g)$network %in% "A", 2] + 10 
plot(g, layout = bad.a.layout) 

當然,誰也不能保證,這將真正好看。但這是修改佈局以適應您的基本方法。如果是一次性項目,手動操作可能會很好。否則,你可能會更深入地研究算法(這對我來說已經證明了一點兔子洞,但是你可能會有更好的運氣)。

備註:即使我不想操縱它們,我幾乎總是在繪圖函數外部設置我的佈局。即使是中等大小的圖形,每次運行繪圖時都可以節省大量時間以不重新計算。