2012-06-28 50 views
5

私はこれを発見しましたanswer本当に便利です。ネットワーク/グラフをプロットし、プロット内のノードの座標を選択するのに役立ちます。igraph固定ノードの座標レイアウト

しかし、レイアウトは座標を-1から1に再設定します。まず、どうやってそれを見つけるのか試しましたが、できませんでした。それはこのような何かをしますか?

(coordinate - mean(coordinates))/(coordinate + mean(coordinates) 

2番目に元の座標を保持する方法はありますか?私はグラフで軸を描くのが好きなので、すべてを一番上げないようにしたいと思うだろう。

答えて

9

最初の質問に対する答えは、plot.igraph関数のソースコードにあります。 Rプロンプトでplot.igraphと入力すると、完全なソースコードが取得されます。言うそこにある部分があります:あなたのための魔法を行いigraphの他の機能は

layout <- layout.norm(layout, -1, 1, -1, 1) 

layout.normですが。 layout.normと入力して動作を確認します。

今、2番目の質問に対する答えは本当に簡単です。 plotの引数にrescale=Fを渡すだけで、は、plot.igraphのブランチ全体をスキップします。layout.normが呼び出されるので、元の座標で動作します。いつものようにxlimylimを使用して、X軸とY軸の限界を設定することができます。

+1

現在、ソースを確認していただきありがとうございます。軸の限界は一緒に結ばれているようです。つまり、 'ylim = c(0,6) 'は' xlim'の範囲を6にします。これは迷惑ですが、これは前進です。もう一度ありがとうございます。 – user1320502

+2

@ user1320502:デフォルトの1:1アスペクト比を避けるには、 'asp = FALSE'を設定します。 –

+0

'rescale = FALSE'を設定したときに何も出力されないのはなぜですか? – pengchy

0
set.seed(111) 
    ig <- graph_from_data_frame(as.data.frame(matrix(sample(letters,40,rep=TRUE),nc=2))) 
    set.seed(123) 
    ig.layout <- layout.fruchterman.reingold(ig) 
    rownames(ig.layout) <- V(ig)$name 
    par(bg="white",mar=c(0,0,0,0),oma=c(0,0,0,0)) 
    plot.igraph(ig,layout=ig.layout,vertex.color=adjustcolor("gray",alpha.f=0.5),rescale=FALSE,xlim=c(4,11),ylim=c(4,11)) 
    set.seed(321) 
    ig.sub <- subgraph(ig,sample(V(ig)$name,5)) 
    plot.igraph(ig.sub,layout=ig.layout[V(ig.sub)$name,],add=TRUE,vertex.color=adjustcolor("orange",alpha.f=0.5),rescale=FALSE) 

このコードはグラフを出力します。ここでオレンジのノードは後で追加されます。

関連する問題