繁体   English   中英

在图像上覆盖 igraph 网络

[英]Overlay igraph Network over an Image

我有一个从igraph包生成的小型网络,我想用背景中的图像绘制它。

我使用此文档来查找如何在图形上叠加图像:

library('png')
 
img.3 =readPNG("D:/R_Files/tiger.png") 

plot(net2, vertex.shape="raster", vertex.label=NA,
vertex.size=16, vertex.size2=16, edge.width=2)

rasterImage(img.3, xleft=0, xright=1.9, ybottom=0, ytop=1.5)

但是这个代码片段会导致图像隐藏网络图,我希望网络覆盖图像,因此充当网络的背景。 我一直无法找到一种方法来做到这一点 - 任何想法如何或在哪里寻找答案?

您知道如何将图像放在顶部,因此将网络图创建为图像并将其放在顶部。 不过要小心; 你必须使背景透明。

由于您没有提供任何图形或图像,因此我将使用任意的东西。 我有一张非洲轮廓的图像,我将生成一个随机图。

library('png')
library(igraph)

## Generate random graph, plot to png using transparent background.
set.seed(1234)
net2 = erdos.renyi.game(10, 0.28)
png("Network.png")
par(bg="transparent")
plot(net2, vertex.label=NA,
    vertex.size=16, vertex.size2=16, edge.width=2)
dev.off()

## Read in image background
net.img = readPNG("Network.png")
img.3 =readPNG("africa3.png")

## Create empty plot
plot(0, type = 'n', axes = FALSE, ann = FALSE, 
    xlim=c(0,1), ylim=c(0,1))

## Now add two images,  first the background, then the network overlay
rasterImage(img.3, xleft=-0.1, xright=1.1, ybottom=-0.1, ytop=1.1)
rasterImage(net.img,  xleft=-0.1, xright=1.1, ybottom=-0.1, ytop=1.1)

非洲覆盖网络

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM