8

この答えは本当に役に立ちました。ネットワーク/グラフをプロットし、プロット内のノードの座標を選択するのに役立ちます。

ただし、レイアウトは座標を-1から1に再スケーリングします。最初に、これがどのように行われるかを調べようとしましたが、できませんでした。こんなことするの?

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

次に、元の座標を保持する方法はありますか?私はグラフで軸をプラットするのが好きなので、すべてをトップで再スケーリングしたくないです。

4

2 に答える 2

10

最初の質問に対する答えは、plot.igraph関数のソースコードにあります。plot.igraphRプロンプトを入力して、完全なソースコードを取得します。そこには次のような部分があります。

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

layout.normigraphあなたのために魔法をかけるもう一つの機能です。入力layout.normして、どのように機能するかを確認します。

さて、2番目の質問への答えは本当に簡単です。rescale=Fの引数に渡すだけで、が呼び出された場所のブランチ全体plotがスキップされるため、元の座標で機能します。次に、とを通常どおりに使用して、X軸とY軸の制限を設定できます。igraphplot.igraphlayout.normxlimylim

于 2012-06-28T23:39:54.210 に答える
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)

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

ここに画像の説明を入力してください

于 2016-12-15T01:51:46.360 に答える