2016-10-31 10 views
0

カラーパレットを使用して、グラフのエッジの色をigraphに定義します。 RColorBrewerを使用してカラーパレットを作成し、エッジ属性情報に基づいて各エッジに固有の色を割り当てる必要があります。ここで別のリストの一意のエントリに基づいて色を生成するR

は、これまでの私の試みです:

colrs<- brewer.pal(length(unique(E(g)$fruit)), "Accent") 
E(g)$color <- colrs[E(g)$fruit] #Does not work 
E(g)$color 
    [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
[40] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
[79] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

は私がcolrsリストへのインデックスとしてE(g)$fruitを使用することができる方法はありますか?

E(g)$fruitに果物の4種類があります

したがって
unique(E(g)$fruit) 
"Apple"  "Orange"  "Grapes"  "Pear" 

は、各エッジがありが、それはcolrsリストから対応する色を取得する必要があります果物の種類に応じて、その結果、アップル」とすべてのエッジ"色が同じで、すべての辺に"オレンジ "があり、同じ色などです。私は最終的に次のコードを使用してグラフをプロットします:

from to fruit 
1 A  B  Apple 
2 A  C  Apple 
3 B  C  Grapes 
4 D  B  Pear 
5 D  C  Orange 

答えて

2

名前ユニークE(g)$fruitによってあなたのcolrsベクトル:

df <- read.table(header=T, text=" 
    from to fruit 
1 A  B  Apple 
2 A  C  Apple 
3 B  C  Grapes 
4 D  B  Pear 
5 D  C  Orange") 
library(igraph) 
library(RColorBrewer) 
g <- graph_from_data_frame(df) 
colrs<- brewer.pal(length(unique(E(g)$fruit)), "Accent") 
names(colrs) <- unique(E(g)$fruit) 
E(g)$color <- colrs[E(g)$fruit] #Does not work 
E(g)$color 
# [1] "#7FC97F" "#7FC97F" "#BEAED4" "#FDC086" "#FFFF99" 
plot(g,layout=layout.fruchterman.reingold, vertex.color='grey80', vertex.label.color="black", edge.color=E(g)$color) 
ここ
plot(g,layout=layout.fruchterman.reingold, vertex.color='grey80', vertex.label.color="black", edge.color=E(g)$color) 

は私のグラフのedgelistのサンプルです
関連する問題