0

現在、R で igraph を使用しています。ネットワーク内の個人に対して複数のプロットを作成しています。これらの各プロットを作成するには、複数の csv ファイルを読み取る必要があります。最初の csv ファイルは、個人とその 2 倍の重みの関連付けの間の相互作用を示しています。これは次のようになります。

    Individual1,Individual2,Weight
    A,A,1
    A,B,.2
    A,C,.02
    B,C,.5

私が読み取った 2 番目の csv ファイルは、それらの個人のランクに関するものです。以下の形式で:

    Individual,Rank
    A,1
    B,5
    C,3
    D,4
    E,2

ランクを使用してプロット内のノードのサイズを決定したいと思い、次のコードを使用していました。

   plot(g, layout=layout.fruchterman.reingold,
       vertex.size=V(g)$Rank +20)

私が抱えている問題は、特定のプロットで観察された個人よりもランクのある個人が常に多いことです。最初の csv ファイルに存在しない 2 番目の csv ファイルの個人を無視するステートメントを作成する方法はありますか?

4

1 に答える 1

3

グラフを作成する前にそれらを削除することも、グラフをプロットするときに削除することもできます。例えば

library(igraph)

D1 <- read.csv(textConnection("#
    Individual1,Individual2,Weight
    A,A,1
    A,B,.2
    A,C,.02
    B,C,.5"),
  header=TRUE, comment.char="#", strip.white=TRUE,
  stringsAsFactors=FALSE)

D2 <- read.csv(textConnection("#
    Individual,Rank
    A,1
    B,5
    C,3
    D,4
    E,2"),
  header=TRUE, comment.char="#", strip.white=TRUE,
  stringsAsFactors=FALSE)

G <- graph.data.frame(D1, vertices=D2)

par(mar=c(0,0,0,0))
plot(G, vertex.size=V(G)$Rank*5+20, edge.arrow.size=.4)

例図

D1 にないものを削除する場合は、次の手順を実行します。

G2 <- delete.vertices(G, setdiff(D2[,1], c(D1[,1], D1[,2])))
plot(G2)
于 2013-07-11T17:03:03.960 に答える