Проблема с использованием изображений в качестве вершин в igraph R - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь установить изображения для вершин по их атрибуту (типу), используя этот код:

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'" 

и вершины не отображаются. Как я мог решить эту проблему?

1 Ответ

0 голосов
/ 03 сентября 2018

Вы, похоже, рассматриваете растр V (gi) $ как список имен изображений. Он должен содержать фактические растры. Вот небольшой пример. Для того, чтобы получить список

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)

Graph with images for vertices

...