2016-05-20 1 views
3

私はggnet2を使ってグラフをプロットしようとしています。これを行うには、次のコードを使用します。ggnet2を使用してRの次数で色を塗ります。

library(igraph) 
lapply(c("sna", "intergraph", "GGally", "igraph", "network"), require, character.only=T) 
data <- read.table('CA-CondMat.txt',sep="\t",header=TRUE) 
g = graph.data.frame(data, directed = TRUE) 
N = vcount(g) 
E = ecount(g) 
perc = 0.1 
d.g = degree(g,mode='all')/N 
new_nodes = sample.int(N,ceiling(perc*N),replace=FALSE,prob =d.g) 
new_g = subgraph(g,new_nodes) 
dg = degree(g,mode='all') 
prob = dg/sum(dg) 
png('example_plot2.png') 
ggnet2(new_g, size = "degree", node.color = "steelblue", size.cut = 4, 
              edge.size = 1, edge.color="grey") 
dev.off() 

と完全に青色のグラフが表示されます。

私はパッケージigraphを使用しています。
https://snap.stanford.edu/data/ca-CondMat.html

編集:

ファイルへ enter image description here

リンク:

は私がプロットにしたいことは、このような自分の度合いに基づいてノードの色のグラフです。

完全な例が追加されました

+2

[再現可能な例を提供する](http://stackoverflow.com/questions/59 63269/how-to-make-a-great-r-reproducible-example)をサンプル入力データと組み合わせて使用​​します。これにより、より簡単にあなたを助けることができます。 – MrFlick

+0

これを実行するデータがないため(CA-CondMat.txtへのアクセス権がないため)、これは再現できません。最初に提供したリンクに記載されている方法でデータを提供する必要があります。 – MrFlick

+0

ファイルを追加しました – totoedrm

答えて

7

私は挑戦しており、グラフは常にfuですn。私はこれがあなたの望むものだと思っています。(後で私がそれに取り組んでいたときにあなたが提供したファイルを使用するように私のオリジナルを修正しました):

私のコードではclr-degreeは半分の学位です。それは黒と緑のノードなしではかなり退屈に見えました。

ライブラリのプレフィックスをすべての呼び出しに追加して、どのネットワークライブラリ(igraph、ネットワークなど)から何が使用されているのかを確認できました。これらのライブラリには、多くの重複や相互依存関係があります。

このコードは、black0-1clr-degreeをマップred程度2、​​程度3、およびred>=4必要があります。注:

library(ggplot2) 
library(igraph) 
library(GGally) 

# the following libraries will be required too - used internally 
lapply(c("sna", "scales","intergraph", "network"),require, character.only=T) 

set.seed(1234) 

# data from https://snap.stanford.edu/data/ca-CondMat.html 
data <- read.table('CA-CondMat.txt',sep="") 

g = igraph::graph.data.frame(data, directed = TRUE) 
N = vcount(g) 
E = ecount(g) 
d.g = igraph::degree(g,mode='all')/N 

# Use new smaller subgraph 
perc = 0.05 
new_nodes = sample.int(N,ceiling(perc*N),replace=FALSE,prob =d.g) 
new_g = igraph::subgraph(g,new_nodes) 
dg = igraph::degree(new_g,mode='all') 

dg <- dg/2 # for some reason there are only even degrees in this file - so we divide by 2 

clrvek = pmax(0,pmin(dg,4)) 
clrnames = c("0"="lightgrey","1"="black", "2"="blue", "3"="green", "4"="red") 

#png('example_plot2.png') 
GGally::ggnet2(new_g, 
     color.legend="clr-degree",palette=clrnames,color=clrvek, 
     size = "degree", 
     edge.size = 1, edge.color="grey", 
     legend.position = "bottom") + coord_equal() 
#dev.off() 

に降伏:あなたがする必要がある

enter image description here

+0

私はすでにこのようなことを分かっていました。今では、 'size.cut'を使ってノードを分割し、各グループに特定の色を付けることで改善しようとしていましたが、その方法を理解できません。 – totoedrm

+0

さて、これを正しいとマークして(質問に答える)、新しい質問をすることができますか?それがSOの仕事の仕組みです。 –

関連する問題