10

N ノード間のエッジの重みを詳述するデータ フレームがあります。この種のデータを操作するためのパッケージはありますか?

たとえば、次の情報をネットワークとしてプロットしたいと思います。

  p1 p2 counts
1  a  b    100
2  a  c    200
3  a  d    100
4  b  c     80
5  b  d     90
6  b  e    100
7  c  d    100
8  c  e     40
9  d  e     60
4

4 に答える 4

14

1 つのオプションは、統計的ソーシャル ネットワーク分析用の R パッケージのstatnetファミリの一部であるネットワークパッケージです。ネットワーク データをまばらな方法で処理するため、大規模なデータ セットに適しています。

以下、私は次のことを行います。

  • エッジリスト (最初の 2 列) をネットワーク オブジェクトに読み込みます
  • 重みと呼ばれるエッジ属性になるようにカウントを割り当てます。
  • gplot でネットワークをプロットします。(エッジの太さの変更については、ヘルプ ページを参照してください。)
  • 社会マトリックスをプロットします (隣接マトリックスを表す 5x5 のブロックのセットのみで、(i,j) セルは相対カウントによって陰影が付けられています)
A = read.table(file="so.txt",header=T)
あ
      p1 p2 カウント
    1 ab 100
    2ac 200
    3 広告 100
    紀元前4年 80年
    5 BD 90
    6 ビー 100
    7CD 100
    8セ40
    9 デ 60

図書館(ネットワーク)
ネット = ネットワーク (A[,1:2])
# ネットワークに関する概要情報を取得する
ネット
     ネットワーク属性:
      頂点 = 5
      指示された = TRUE
      ハイパー=偽
      ループ = FALSE
      複数 = FALSE
      二部 = FALSE
      合計エッジ = 9
        エッジの欠落 = 0
        欠けていないエッジ= 9
        頂点属性名:
        vertex.names
     隣接行列:
      abcde
    0 1 1 1 0
    b 0 0 1 1 1
    c 0 0 0 1 1
    日 0 0 0 0 1
    e 0 0 0 0 0

set.edge.attribute(net,"weight",A[,3])
gplot(ネット)

## もう一つのクールな機能
s = as.sociomatrix (ネット、attrname="重量")
plot.sociomatrix(s)
于 2009-07-23T03:31:37.633 に答える
4

igraphのデータのネットワークプロットを作成する方法は次のとおりです。

d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
                p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'),
                counts=c(100, 200, 100,80, 90,100, 100,40,60))

library(igraph)
g <- graph.data.frame(d, directed=TRUE)
print(g, e=TRUE, v=TRUE)
tkplot(g, vertex.label=V(g)$name)
于 2009-07-23T04:30:39.980 に答える
0

私の経験では、igraphは、大規模なグラフ理論的作業のための私のお気に入りのパッケージです。これはメモリ効率が高く、いくつかの非常に優れたアルゴリズムを備えています。igraphは、内部エッジリストのようなデータ構造を使用します。
より単純な/より小さなもののために、私は「sna」パッケージ(「ソーシャルネットワーク分析」)を使用する傾向があります。インタラクティブな作業や小規模なネットワークのプロットに最適です。snaは、より多くの隣接行列データ構造を使用します。

于 2009-08-02T19:51:57.823 に答える
0

私はigraphでも働いています。グラフを作成する 1 つの方法は、すべての「from」「to」ノードのリストをテキスト ファイルに書き出し、それをグラフ オブジェクトとして読み込むことです。グラフ オブジェクトは、多くのグラフ理論プロセスの対象となり、非常に大規模なネットワークを処理できます。

于 2009-07-27T05:04:34.127 に答える