如何使用Igraph描绘具有甜甜圈形状顶点的网络?

时间:2017-07-04 02:28:15

标签: r plot igraph

我想描绘一个带有Ring / Donut Shaped Vertices的网络。我没有在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本身将饼形顶点转换为环形/环形顶点的方法?我搜索了一个&#34; vertex.pie.hole&#34;参数,但它不存在。我看到这样做的最简单方法是描绘白点&#34;在顶点的质心中,但显然不是理想情况。

我也知道可以定义我们自己的顶点形状,但我必须承认,对于环形/圆环形状来说,我真的很难这样做。

非常感谢您的关注,

1 个答案:

答案 0 :(得分: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