2017-04-18 4 views
0

以下のコードを持つデータセットがあります。フレームを変えずに、写真のようなグラフを取得する必要があります。私はrbindを使用して、データフレームに階層構造を追加して、図のような図を得ようとしました。 col0およびcol1のデータは、データの除外を変更していますが、col2は常に同じです。igraphをRでレンダリングする方法

df <- data.frame(col0 = c("Cat Dog Wolf", "Cat Dog Wolf", "Cat Dog Wolf"), 
col1 = c("Cat", "Dog", "Wolf"), 
col2 = c("Feline", "Canis", "Canis2")) 

df <-rbind(df, data.frame(col0="Cat Dog Wolf", col1 = "Canis2", col2 = "Canis")) 

df <-df[c('col1', 'col2')] 
names(df) <-c('from', 'to') 
abc <-union(df$to, df$from) 
g <-graph.data.frame(df, directed = TRUE, vertices = abc) 
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = "blue", 
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g)) 

enter image description here

答えて

1

あなたは2つだけの列( "から" と "へ")から取られた3つのエッジを必要としています。しかし、dfに3つの列がありますので、それらから選択する必要があります。私は、col1col2の名前を一緒に貼り付けた新しい列を作成しました。次に、上から最初の2つの頂点を選択し、もう1つはrbindを選択しました。

df <- data.frame(col0 = "Cat Dog Wolf", 
col1 = c("Cat", "Dog", "Wolf"), 
col2 = c("Feline", "Canis", "Canis2")) 
df$col1_2 <- paste(df$col2,df$col1) 

df <- rbind(df[1:2,c(1,4)],data.frame(col0=df[2,4],col1_2=df[3,4])) 

names(df) <-c('from', 'to') 
abc <-union(df$to, df$from) 
g <-graph.data.frame(df, directed = TRUE, vertices = abc) 
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = c("lightblue","red","green","white"), 
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g)) 

enter image description here

+0

それは良い答えだが、私はまだ、私は私の答えを更新色 –

+0

@DeividasKiznisに問題があります。色を取得するには、次のものが必要です: 'vertex.color = c(" lightblue "、" red "、" green "、" white ")' –

関連する問題