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

How to depict a Network with Donut shaped vertices with Igraph?

我想描绘一个具有 Ring/Donut 形顶点的网络。我在 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) 
}

这里是生成的图像:

您知道使用 Igraph 本身将饼形顶点变成 ring/donut 形顶点的方法吗?我搜索了 "vertex.pie.hole" 参数,但它不存在。我看到最简单的方法是在顶点的质心中描绘 "white points",但这显然不是理想的情况。

我也知道可以定义我们自己的顶点形状,但我必须承认,对于 ring/donut 形状,我真的很难做到这一点。

非常感谢您的关注,

我不确定是否有直接绘制甜甜圈的方法,但这里有一个获得相同结果的技巧:我们使用您的代码绘制图形一次,然后我们绘制较小的白色圆圈以创建甜甜圈。设置种子确保顶点每次都在相同的位置。

  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)