2016-05-20 74 views
3

我一直在試圖使用ggnet2來繪製一個圖。爲此,我使用以下代碼:R使用ggnet2度數的顏色

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

我想情節是根據他們的程度這樣一個與節點的顏色圖: enter image description here

鏈接到文件:
https://snap.stanford.edu/data/ca-CondMat.html

編輯:

舉報全部附加信息

+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 ñ。我認爲這是你想要的(我修改了我的原始文件,使用你以後提供的文件,因爲我正在處理它):

在我的代碼clr-degree是度數的一半,因爲此文件只有對稱鏈接和沒有黑色和綠色的節點,它看起來很無聊。

我還爲所有調用添加了庫前綴,以便我可以從網絡庫(igraph,network等)中看到正在使用的內容。這些庫中有很多重疊和相互依賴關係。

注意此代碼應該映射clr-degree0-1black,以red程度2,以​​程度3,並>=4red

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應該如何工作。 –