グラフ理論—分析と可視化


22

被験者がCrossValidatedの利益を得るかどうかはわかりません。教えてくれます。

私は(グラフ理論から)グラフを研究する必要があります。特定の数のドットが接続されています。すべてのドットと各ドットが依存しているドットを含むテーブルがあります。(私も含意を持つ別のテーブルを持っています)

私の質問は次のとおり
です。それを簡単に研究するための優れたソフトウェア(またはRパッケージ)はありますか?
グラフを表示する簡単な方法はありますか?


私はcran.r-project.org/web/packages/graph/vignettes/graph.pdfを使用しようとしましたが、パッケージ「Rgraphviz」はもう利用できないようです。誰にも別の解決策がありますか?
RockScience


1
ありがとう!Graphvizは完璧で非常に柔軟性があり、Rgraphvizインターフェースを使用してRで使用します。
RockScience

回答:


15

iGraphは、非常に興味深いクロス言語(R、Python、Ruby、C)ライブラリです。これにより、単方向および有向グラフを操作でき、かなり多くの分析アルゴリズムがすでに実装されています。


1
(+1)私の回答はあなたの後に来たようです。あなたの応答はやや異なる視点(クロスプラットフォーム、アルゴリズム)を強調しているので、私たちの応答はそれほど冗長ではないと感じていますが、問題なく私のものを削除できます。
chl

14

グラフに加えて、有向グラフと無向グラフ、発生率/隣接行列などを表すためのさまざまなパッケージがあります。たとえば、gRタスクビューを見てください。

視覚化と基本的な計算のために、igraphパッケージはRgraphviz(@Robが指摘したBioC上)に加えて、信頼できるものだと思います。後者が適切に機能するには、graphvizもインストールする必要があることに注意してください。IGRAPHのパッケージには、多くのように、良いレイアウトを作成するための素敵なアルゴリズムがあるgraphvizのを

偽の隣接行列から始まる使用例を次に示します。

adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)

代替テキスト


ご回答有難うございます。GraphvizのはRを使ってインストールすることは容易ではないが、それは偉大なライブラリであることを縫い目
RockScience

参考までに、私はRでgraphvizコードを生成し、mediawiki graphviz拡張を使用してmediawikiでそれを読みます。(RgraphvizパッケージはRの最後のバージョンとの仕事をインストールしてdoesntのことは容易ではありません)
RockScience

「パッケージ 'graph'はCRANリポジトリから削除されました。」
-bartektartanus

8

言われたこととは別に、仮想化タスクのみ(およびRの外部)については、Gephiのチェックに興味があるかもしれません。


8

別のオプションはstatnetパッケージです。Statnetには、SNAで一般的に使用されるすべてのメジャーに対する機能があり、ERGモデルを推定することもできます。エッジリストにデータがある場合は、次のようにデータを読み取ります(データフレームに「edgelist」というラベルが付けられていると仮定します)。

net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE

データが隣接行列にある場合、matrix.type引数を「隣接」に置き換えます。

net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)

statnetパッケージには、非常に優れたプロット機能があります。単純なプロットを行うには、単に次のように入力します。

gplot(net)

中間の中心性に応じてノードをスケーリングするには、次のようにします。

bet <- betweenness(net)
gplot(net, vertex.cex = bet)

デフォルトでは、gplot関数はノードを配置するためにFruchterman-Reingoldアルゴリズムを使用しますが、これはモードタイプから制御できます。たとえば、ノードタイプの配置にMDSを使用します。

gplot(net, vertex.cex, mode = "mds")

または円レイアウトを使用するには:

gplot(net, vertex.cex, mode = "circle")

さらに多くの可能性があり、このガイドではほとんどの基本的なオプションについて説明します。自己完結型の例:

net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels

(+1)このパッケージを使用したことはありませんが、概要から試してみてください。一見良いようです。
chl

3

同様の問題は、あなたが具体的に興味がある場合にも、cstheoryに頼まれた平面グラフ、または書誌可視化

Gephiはすでにここで言及されていましたが、いくつかのcstheoryでも推奨されていたので、良い選択だと思います。

その他のクールなオプションは次のとおりです。

  • Flareはいくつかの非常にクールな視覚化ツールを提供し、レポートや論文用に非常にきれいなグラフィックを作成します。
  • Cyptoscapeには、非常に強力な分析および視覚化ツールがあります。化学および分子生物学に特に適しています。
  • このWebサイトは、他の多くの優れた視覚化ツールおよびライブラリへのリンクを提供します(R向けではありません)。

2

私が見つかりました。NodeXLは非常に有用で使いやすいです。これは、グラフの簡単なインポート/エクスポート、エッジ/頂点のフォーマット、いくつかのメトリックの計算、いくつかのクラスタリングアルゴリズムを提供するMS Excelテンプレートです。カスタム画像を頂点として簡単に使用できます。
私にとって便利なもう1つのツールは、Microsoft Automatic Graphレイアウトでした。これは、(SVGをサポートするブラウザーを使用して)オンラインで適切なレイアウトを試すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.