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

时间:2017-04-13 22:44:42

标签: r igraph

使用R和igraph绘制图形,我使用颜色标记顶点类型。见下面的代码。是否可以使用图案而不是颜色填充顶点,以便在以彩色和黑白方式查看节点类型时可以区分? 我需要4种独特的颜色/图案。来自colorbrewer的唯一调色板是这一个:http://colorbrewer2.org/#type=sequential&scheme=OrRd&n=4 但是,对于我的稀疏图形,它仍然难以区分颜色。另外,我是色盲,这对我没有帮助。我想知道我是否可以用条纹,哈希,波尔卡圆点以及除颜色之外的任何东西填充顶点。

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)

1 个答案:

答案 0 :(得分:1)

你的图表有20个顶点。

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

形状参数(参见?vertex.shape.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代码中看到使用'density'参数。如果您想进行自己的检查,则需要查看igraph - 命名空间:

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