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