在R中的igraph中,我目前有一个如下图:
这是由代码制成的:
g <- make_undirected_graph(edges = c(1, 3, 2, 1, 2, 4, 3, 4, 4, 5), n = 5)
我想在顶点上是圆的虚线。有一个edge.label
选择,但没有vertex.label
选择。还有另一种方法吗?谢谢。
您可以定义自己的形状:https : //igraph.org/r/doc/shapes.html,并在https://r.789695.n4.nabble.com/Drawing中给出带有虚线边框的点的示例-a-dotted-circle-td4655331.html。有关创建新形状的完整示例,请参见https://lists.gnu.org/archive/html/igraph-help/2013-03/msg00030.html。另请参阅的更多示例?add_shape
。下面的示例对list.gnu.org中的代码进行了调整,以合并所有内容。
创建新igraph
形状的功能
myimg <- function(coords, v=NULL, params) { vertex.color <- params("vertex", "color") if (length(vertex.color) != 1 && !is.null(v)) { vertex.color <- vertex.color[v] } vertex.size <- 1/200 * params("vertex", "size") if (length(vertex.size) != 1 && !is.null(v)) { vertex.size <- vertex.size[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.frame.width <- params("vertex", "frame.width") if (length(vertex.frame.width) != 1 && !is.null(v)) { vertex.frame.width <- vertex.frame.width[v] } ltype <- params("vertex", "ltype") if (length(ltype) != 1 && !is.null(v)) { ltype <- ltype[v] } mapply(coords[,1], coords[,2], vertex.color, vertex.frame.color, vertex.size, vertex.frame.width, ltype, FUN=function(x, y, bg, fg, size, lwd, lty) { symbols(x=x, y=y, bg=bg, fg=fg, lwd=lwd, lty=lty, circles=size, add=TRUE, inches=FALSE) }) }
然后,您可以igraph
使用识别形状add_shape
。您可以使用parameters
参数设置默认参数值。
library(igraph) g <- make_undirected_graph(edges = c(1, 3, 2, 1, 2, 4, 3, 4, 4, 5), n = 5) add_shape("myimg", plot=myimg, parameters = list( vertex.frame.color=1, vertex.frame.width=1, vertex.ltype=1))
然后画
plot(g, vertex.shape="myimg", vertex.frame.color=1:5, vertex.frame.width=5, vertex.ltype=1:5, vertex.color=6:10, vertex.size=seq(50, 80, length=5))
要点缀所有边框,请使用vertex.ltype="dotted"
或vertex.ltype=3
。