2016-06-16 2 views
1

私は行列BとベクトルAを持っています(行列の値は0または1です;ベクトルの値は0から1まで連続します; a,b,cは3属性です)。Rネットワーク - 別のベクトルに基づいてノードを色分けします

B = matrix(c(0,1,0,1,0,1,1,1,0),nrow=3,ncol=3) 
rownames(B)<-c("a", "b", "c") 

A = c(0.23,0.56,0.78) 

ノード勾配はベクトルAの値に基づいてを着色して、私は(値0.78を持つ属性caより暗いより、のスケールは、白から黒へと言うせ、ネットワークを作成しようとしました値0.23)。私はこれらの行を試しましたが、ノードの色分けに失敗しました。

require(Rgraphviz) 
am.graph<-new("graphAM", adjMat=B, edgemode="directed") 
plot(am.graph, attrs = list(node = list(fillcolor = A), 
         edge = list(arrowsize=0.5))) 

本当に助けていただきありがとうございます。私の説明が明確でない場合、私はRへの新たなので、本当に申し訳ありません

答えて

2
あなたは、パッケージIGRAPH使用することができ

library(igraph) 
B = matrix(c(0,1,0,1,0,1,1,1,0),nrow=3,ncol=3) 
rownames(B)<-c("a", "b", "c") 
A = c(0.23,0.56,0.78)*100 
g<- graph.adjacency(B) 

fine = 500 # this will adjust the resolving power. 
palette = colorRampPalette(c('green','darkgreen')) 
#this gives you the colors you want for every point 
graphCol = palette(fine)[as.numeric(cut(A,breaks = fine))] 
plot(g, vertex.size=A, vertex.color = graphCol) 

あなたはただ省略し、異なるサイズの頂点を必要としない場合をvertex.size = Aあなたのプロットで!

+0

ありがとうございます。申し訳ありませんが私の質問ではっきりしていませんでした。データセット内の実際のベクトルには多くの値があるので、3色だけでなく、グラデーションカラーを使用したいと思います。助言がありますか? – Square9627

+0

私は自分の答えを変えました。今はうまくいくはずです! :) – Ale

関連する問題