1

先週投稿しましたが、きちんと説明できていませんでした。

グラフの頂点として多層同心円を描画しようとしています。

ここでは私が行ったことの簡単なバージョンを見つけることができ、ここでは私がやりたいことを見つけることができます。エッジも頂点と一緒にドラッグする必要があることに注意してください。

これは前者のコードです:

library(igraph)
g=graph.empty(4)
g[1,2]=T
g[3,4]=T
resColors=matrix(as.character(list("green","red","green","green","green","grey","grey",  "green","green","green","red","red","green","green","green","green","red","red","green","green")), nrow=vcount(g))
colors = list()
values = list()
for (i in 1:vcount(g)) {
   values[[i]] = rep(1, times = ncol(resColors))
   colors[i] = list(resColors[i,])
}
size=c(60,50,30,20)
plot(g, vertex.shape = "pie", vertex.pie = values, vertex.pie.color = colors, vertex.size = size)

ありがとう、ナット

4

2 に答える 2

0

他の誰かが答えを必要とする場合に備えて、解決策は私よりも簡単でした:

プロットする前に、例として fruchterman.reingold というレイアウトを呼び出します。

lay <- layout.fruchterman.reingold(g)

次に、lay を編集します。この例では、ノード 3 をノード 1 に配置します。

lay[3,] <- lay[1,]

最後に、編集したレイアウトでプロットします。

plot(g, vertex.shape = "pie", vertex.pie = values, vertex.pie.color = colors, 
     vertex.size = size, layout = lay)
于 2014-03-05T03:38:50.707 に答える