2017-07-04 53 views
4

我想描述一個有Ring/Donut Shaped Vertices的網絡。我在Igraph文檔中沒有找到這樣的形狀,但是我找到了一個餡餅形狀。如下面的代碼:如何使用Igraph描繪帶甜甜圈形頂點的網絡?

library(igraph) 
g <- make_ring(10) 
values <- lapply(1:10, function(x) sample(1:10,3)) 
if (interactive()) { 
    plot(g, vertex.shape="pie", vertex.pie=values,    
     vertex.pie.color=list(heat.colors(5)), 
     vertex.size=seq(10,30,length=10), vertex.label=NA) 
} 

這裏產生的圖像:

enter image description here

你知道把一個餅形頂點到使用IGRAPH本身就是一個環/甜甜圈形頂點的一種方式?我搜索了一個「vertex.pie.hole」參數,但它不存在。我所看到的最簡單的方法是在頂點的質心上描繪「白點」,但顯然不是理想的情況。

我也知道可以定義我們自己的頂點形狀,但我必須承認,對於環/圓環形狀來說,我很難做到這一點。

非常感謝您的關注,

回答

4

我不知道是否有直接繪製甜甜圈的方式,但這裏有一個黑客以獲得相同的結果:我們曾經使用過您的代碼繪製圖形,那麼我們重疊繪製更小的白色圓圈來創建甜甜圈。設置種子可確保頂點每次都在同一位置。

set.seed(2) 
    plot(g, vertex.shape="pie", vertex.pie=values,    
     vertex.pie.color=list(heat.colors(5)), 
     vertex.size=seq(10,30,length=10), vertex.label=NA) 

    set.seed(2) 
    plot(g, 
     vertex.size=seq(5,15,length=10), vertex.label=NA, 
     vertex.color="white", 
     edge.color=NA, 
     add=TRUE) 

enter image description here

+0

謝謝您的回答!雖然這不是一個理想的情況,但我認爲這絕對是一種解決方法! –