在 igraph R 中使用图像作为顶点的问题

The issue with using images as vertices in igraph R

我正在尝试通过图像的属性(类型)将图像设置为顶点,使用此代码:

library(igraph)
library(png)

gi <- graph.formula(child -- org -- person)

img1 <- readPNG("baby-boy.png")
img2 <- readPNG("knife.png")
img3 <- readPNG("detective.png")

V(gi)$raster <- ni$type
V(gi)$raster <- gsub("child", "img1", V(gi)$raster)
V(gi)$raster <- gsub("org", "img2", V(gi)$raster)
V(gi)$raster <- gsub("person", "img3", V(gi)$raster)

plot(gi, layout_as_star(gi),
 vertex.label.cex = 0.5,
 edge.arrow.size = 0.1,
 vertex.shape="raster",
 vertex.size = 16, 
 vertex.size2 = 16)

因此,我收到以下错误消息:

"Error in rasterImage(ras, coords[i, 1] - size[i], coords[i, 2] - size2[i],  : 
invalid color name 'img1'" 

并且没有绘制顶点。 我该如何解决这个问题?

您似乎将 V(gi)$raster 视为图像名称列表。它应该包含实际的栅格。这是一个小例子。为了得到列表

library(igraph)
library(png)

set.seed(1234)
g = erdos.renyi.game(4, 0.5)

## Sorry. This part is not reproducible.
## You will need to get your own images.
img1 = readPNG("006.png")
img2 = readPNG("040.png")
img3 = readPNG("068.png")
img4 = readPNG("104.png")

V(g)$raster = replicate(vcount(g), img1, simplify=FALSE)
V(g)$raster[[2]] = img2
V(g)$raster[[3]] = img3
V(g)$raster[[4]] = img4

plot(g, vertex.shape="raster", vertex.label=NA)