1

我可以使用以下代码使用 qgraph 实现相同的目的。但是我想使用 igraph 做同样的事情,并使用 igraph 动态地将图像显示为节点图标,以便我可以更好地控制每个顶点。

require(qgraph)
img<-c    ("imagepath/1.jpg","imagepath/2.jpg","imagepath/3.jpg","imagepath/4.jpg","imagepath/5.jpg","imagepath/6.jpg" )
demo_adj <- data.frame(from=c(1,2,'B','X','Y','A'),to=c('A','B','A','Y','1','Y'))
qgraph(demo_adj,images=img)

我猜我应该能够根据特定条件为每个边缘着色。对上述任何建议都会有所帮助

4

1 回答 1

2

您可以使用功能vertex.shape="raster选项plot.igraph

library(jpeg)
library(igraph)
## here you should give your real path
ll <- list.files(PATH_TO_IMAGES,pattern='.*jpg',full.names=TRUE)
rasters <- lapply(ll,readJPEG)
## create the graph
gg <- graph.data.frame(demo_adj)
## set raster attribute
V(gg)$raster <- rasters[1:length(V(gg))]
plot(gg, layout=layout.star, vertex.shape="raster",
     vertex.label=V(gg)$name, margin=.2,
     vertex.size=50, vertex.size2=50,
     vertex.label.dist=2, vertex.label.degree=0)

在此处输入图像描述

编辑

要将图片名称添加为顶点标签,您可以执行以下操作:

ll.names <-  list.files(PATH_TO_IMAGES,pattern='.*jpg')
ll.names <- gsub('[.].*','',ll.names)
V(gg)$name <- ll.names[1:length(V(gg))]
于 2013-05-21T08:04:39.707 回答