2012-10-05 73 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) 

当然,谁也不能保证,这将真正好看。但这是修改布局以适应您的基本方法。如果是一次性项目,手动操作可能会很好。否则,你可能会更深入地研究算法(这对我来说已经证明了一点兔子洞,但是你可能会有更好的运气)。

备注:即使我不想操纵它们,我几乎总是在绘图函数外部设置我的布局。即使是中等大小的图形,每次运行绘图时都可以节省大量时间以不重新计算。