R,igraph,是否有可能用图案填充顶点

问题描述:

用R和igraph绘制图形,我用颜色来标记顶点类型。见下面的代码。是否可以用图案而不是颜色填充顶点,以便在用黑色和白色查看时可以区分节点类型? 我需要4种独特的颜色/图案。 colorbrewer唯一适合的调色板是这样的:http://colorbrewer2.org/#type=sequential&scheme=OrRd&n=4 但是,对于我的稀疏图形来说,它仍然很难区分颜色。此外,我是色盲,这没有帮助。我想知道我是否可以用条纹,圆点,圆点或其他颜色填充顶点。R,igraph,是否有可能用图案填充顶点

library(igraph) 
library(RColorBrewer) 
cols = brewer.pal(4, "Dark2") #looks good in color, not in bw 
g <- sample_pa(20) 
l <- layout_with_fr(g,niter=300) 
plot(g,layout=l,edge.arrow.size=0,vertex.size=8, 
    vertex.frame.color="white",vertex.label=NA,vertex.color=cols) 
+0

这确实创建了一个图形,但它不是很重复性。如果你提供了一个类似于你的用例的起点,会更好。 –

+1

如果你没有回应反馈,人们会失去兴趣。我一直在为可能的途径构建测试用例,但问题的模糊性使我不愿意发布答案。 –

+0

这与我的用例非常吻合,完全可重现。如果您希望图形每次都将“set.seed(777)”放在顶部 – skellpco

你的图有20个顶点。

> length(V(g)) 
[1] 20 

形状参数(请参阅?vertex.shape.pie可以在相对的段大小的数值规范和不同颜色的形式应用的变化的pie-“模式”(或形状):

values <- lapply(1:20, function(x) sample(1:5)) #segment sizes 
colrs <- lapply(1:20, function(x) sample(c(heat.colors(4), "#000000FF"), 5)) # order of colors 
plot(g, vertex.shape="pie", vertex.pie=values, 
     vertex.pie.color=colrs, 
     vertex.size=seq(10,30,length=10), vertex.label=NA) 

enter image description here

你可以让这些“白”与“#FFFFFFFF”或使它们不同的灰色色调是可能的模式基图形(这是一个带有参数使用plot.igraph喜欢范式:

rect(.8,.8,1,1, col=grey(.2), density=20, angle=45) 

但是,我没有看到在plot.igraph代码中使用'密度'参数。如果你想要做自己的检查,则需要看igraph - 命名空间内:

ls(envir= as.environment("package:igraph"))