【问题标题】:How to change vertex.frame.color in igraph for R for a customized shape?如何为 R 更改 igraph 中的 vertex.frame.color 以获得自定义形状?
【发布时间】:2020-10-25 14:57:57
【问题描述】:

你能帮帮我吗?

我正在使用自定义菱形igraph 中绘制一个网络。形状是使用以下函数创建的,它是对igraph manual中提供的三角形形状函数的修改:

MyDiamond <- function(coords, v=NULL, params) {
  vertex.color <- params("vertex", "color")
  if (length(vertex.color) != 1 && !is.null(v)) {
    vertex.color <- vertex.color[v]
  }
  vertex.frame.color <- params("vertex", "frame.color")
  if (length(vertex.frame.color) != 1 && !is.null(v)) {
    vertex.frame.color <- vertex.frame.color[v]
  }
  vertex.size <- 1/200 * params("vertex", "size")
  if (length(vertex.size) != 1 && !is.null(v)) {
    vertex.size <- vertex.size[v]
  }
  
  symbols(x=coords[,1], y=coords[,2], bg=vertex.color,
          stars=cbind(vertex.size, vertex.size, vertex.size, vertex.size),
          add=TRUE, inches=FALSE)
}
add_shape("diamond", clip=shapes("circle")$clip,
          plot=MyDiamond, parameters=list(vertex.frame.color="white",
                                           vertex.frame.width=1))

调用此函数后,我绘制图形,就像 igraph 手册中的一样:

shapes <- setdiff(shapes(), "")

g <- make_ring(length(shapes))

plot(g, vertex.shape="diamond", 
     vertex.color=rainbow(vcount(g)),
     vertex.frame.color = "white",
     vertex.size=seq(10,20,length=vcount(g)))

如您所见,vertex.frame.color 参数不适用于此自定义菱形。我怎样才能让它发挥作用?

非常感谢!

【问题讨论】:

    标签: r data-visualization igraph shapes


    【解决方案1】:

    我找到了解决办法!

    只需在对symbols 的调用中将fg 参数添加到菱形函数的末尾即可。

    MyDiamond <- function(coords, v=NULL, params) {
      vertex.color <- params("vertex", "color")
      if (length(vertex.color) != 1 && !is.null(v)) {
        vertex.color <- vertex.color[v]
      }
      vertex.frame.color <- params("vertex", "frame.color")
      if (length(vertex.frame.color) != 1 && !is.null(v)) {
        vertex.frame.color <- vertex.frame.color[v]
      }
      vertex.size <- 1/200 * params("vertex", "size")
      if (length(vertex.size) != 1 && !is.null(v)) {
        vertex.size <- vertex.size[v]
      }
      
      symbols(x=coords[,1], y=coords[,2], bg=vertex.color, fg=vertex.frame.color,
              stars=cbind(vertex.size, vertex.size, vertex.size, vertex.size),
              add=TRUE, inches=FALSE)
    }
    add_shape("diamond", clip=shapes("circle")$clip,
              plot=MyDiamond, parameters=list(vertex.frame.color="white",
                                               vertex.frame.width=1))
    

    希望对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多