如何使用igraph绘制椭圆节点?

时间:2018-01-26 08:20:58

标签: igraph

似乎从来没有问过这样的问题。但是,igraph关于自定义节点形状的帮助页面相当模糊。有人可以在igraph中提供自定义节点形状的完整示例吗?

1 个答案:

答案 0 :(得分:1)

您没有说出您使用的语言,因此我将在R中回复。

可以使用shapes()列出内置的形状。不幸的是,椭圆不在其中。帮助页面?shapes提供了一些如何添加其他节点形状的示例 - 三角形,星形和添加图像。下面的响应是对添加三角形的示例代码的简单修改。绘制椭圆有几个函数。我使用了plotrix包中的那个。

library(igraph)
library(plotrix)

## Need a graph as an example
set.seed(1)
N10 = erdos.renyi.game(10, 0.31)

## Function for plotting an elliptical node
myellipse <- function(coords, v=NULL, params) {
  vertex.color <- params("vertex", "color")
  if (length(vertex.color) != 1 && !is.null(v)) {
    vertex.color <- vertex.color[v]
  }
  vertex.size <- 1/30 * params("vertex", "size")
  if (length(vertex.size) != 1 && !is.null(v)) {
    vertex.size <- vertex.size[v]
  }

  draw.ellipse(x=coords[,1], y=coords[,2],
    a = vertex.size, b=vertex.size/2, col=vertex.color)
}

## Register the shape with igraph
add_shape("ellipse", clip=shapes("circle")$clip,
                 plot=myellipse)

## Plot it, with different sizes and colors to illustrate
plot(N10, vertex.shape="ellipse", vertex.color=rainbow(vcount(N10)),
     vertex.size=(2:11)/2)

Et瞧。

Elliptical Nodes