【问题标题】:R, igraph, is it possible to fill vertex with patternR,igraph,是否可以用图案填充顶点
【发布时间】:2017-04-13 22:44:41
【问题描述】:

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

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)

【问题讨论】:

  • 这确实创建了一个图表,但它的重现性不是很好。如果您提供一个类似于您的用例的起点会更好。
  • 如果您不回复反馈,人们就会失去兴趣。我一直在为潜在途径构建测试用例,但问题的模糊性让我不愿意发布答案。
  • 这与我的用例非常匹配,并且完全可重现。如果您希望图表每次都相同,请将“set.seed(777)”放在顶部
  • 为什么不用顶点形状而不是颜色来区分?由于您只需要四种独特的图案,因此形状应该可以工作。
  • 所以你想要这个随机的颜色和图案?

标签: r igraph


【解决方案1】:

您的图有 20 个顶点。

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

shape 参数(请参阅?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)

您可以使用“#ffffffff”将它们设为“白色”,或者将它们设为不同深浅的灰色。可以对基本图形进行图案化(plot.igraph 使用的范例,参数如下:

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

但是,我没有看到plot.igraph 代码中使用了“密度”参数。如果你想自己检查,你需要查看igraph-namespace:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2018-05-14
    • 2018-04-14
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多