3

選択した igraph ノードをプロットするにはどうすればよいですか?

既存のグラフがありますが、複雑すぎます。ノードのサブセットを「ズームイン」できるようにしたいと考えています。

エッジのサブセットを削除することはできますが、分離されたノードを「オフ」にする方法がわかりません。

networkパッケージ を使用する場合、displayisolates=FALSEパラメーターはこれを行います。これらの孤立したノードは表示されません。

レイアウト アルゴリズムは、「オフになっている」エッジも無視する必要があります。

例えば:

g1 <- graph( c( 0,1, 1,2, 2,2, 2,3 ) )
g2 <- delete.edges(g1, E(g1, c(0,1)))
plot(g2)

g2 をプロットするとき、ノード 0 を表示したくありません。

ありがとう

4

3 に答える 3

7

ユーザーが他の回答にコメントするために新しい回答を送信してはならないことは理解していますが、私の編集は拒否され、コメントを残すほどの評判はありません。

上記のWineの回答で、deletes.isolates関数の「-1」インデックス修正はigraph 0.6以降は必要ないことを指摘したかっただけです。こちらのタマスのコメントも参照してください。

特定の重みを持つエッジのみをプロットする - igraph

于 2013-03-08T18:56:54.680 に答える
4

ねえ、あなたはそれを理解したようですが、質問を調査する際に (私は通常、自分で network パッケージを使用しますが、いくつかのことには igraph も使用しようとしました)、それを自動的に行う関数を思いつきました。 displayisolates = F 機能。

delete.isolates <- function(graph, mode = 'all') {
  isolates <- which(degree(graph, mode = mode) == 0) - 1
  delete.vertices(graph, isolates)
}

あなたの場合、これを g1 で実行すると、引数 mode = 'in' を使用した場合は最初の頂点が削除され、引数 mode = 'out' を使用した場合は最後の頂点が削除されます。

したがって、あなたの場合、入力した場合:

g2 <- delete.isolates(g1, mode = 'in')
plot(g2)

欲しいものを手に入れるべきです。私は igraph をあまり使用しないので、この関数が他のグラフで何らかの問題に遭遇する可能性は非常に高いです。

PS これはまた、新しい g2 では、最初の頂点が次数に基づいたアイソレートになるという奇妙な結果をもたらします。この関数は、ほとんどの状況ではおそらく役に立ちませんが、よりクリーンなプロットを作成するのに役立つ場合があります。

于 2011-04-14T18:21:27.480 に答える