当用igraph绘制网络时,巨大的箭头朝向

时间:2017-05-07 19:06:59

标签: plot social-networking igraph

修改 我试图找出我的代码有什么问题,我开始绘制简单的图形,以查看箭头在较小的图形上的外观。我厌倦了以下命令:

 g2 <- graph( edges=c(1,2, 2,3, 3, 1), n=10 ) 
 plot(g2)   

这是我的图表:。因此,我认为问题不在于我的代码,而是使用igraph或R.我重新安装了两个,igraph和R但它没有解决问题。是否可能存在导致此问题的包装冲突?这是我安装的一些软件包:

 [1] "base"         "boot"         "class"        "cluster"     
 [5] "codetools"    "colorspace"   "compiler"     "datasets"    
 [9] "dichromat"    "digest"       "doParallel"   "foreach"     
[13] "foreign"      "graphics"     "grDevices"    "grid"        
[17] "gridBase"     "gtable"       "igraph"       "irlba"       
[21] "iterators"    "KernSmooth"   "labeling"     "lattice"     
[25] "lazyeval"     "magrittr"     "MASS"         "Matrix"      
[29] "methods"      "mgcv"         "munsell"      "nlme"        
[33] "NMF"          "nnet"         "parallel"     "pkgmaker"    
[37] "plyr"         "RColorBrewer" "Rcpp"         "registry"    
[41] "reshape2"     "rngtools"     "rpart"        "scales"      
[45] "spatial"      "splines"      "stats"        "stats4"      
[49] "stringi"      "stringr"      "survival"     "tcltk"       
[53] "tibble"       "tools"        "utils"        "xtable"    

我正在尝试生成一个网络图,由于某种原因,我的箭头看起来像小矩形,而不是通常的三角形箭头。

以下是我正在使用的代码:

toy.edges <- na.omit(read.csv("Data/Edge_list-toy.csv", header = TRUE, colClasses = "numeric", na.strings = c("NA", "", "#N/A")))
toy.nodes <- na.omit(read.csv("Data/NodesDataF-toy.csv", header = TRUE, na.strings = c("NA", "", "#N/A")))
toy.graph <- graph_from_data_frame(toy.edges, directed = TRUE, vertices = toy.nodes)

V(toy.graph)$color <- "magenta" 
V(toy.graph)$shape <- "sphere"
V(toy.graph)$size <- 3*15^(ifelse(is.na(V(toy.graph)$node.size), 0.001, 
V(toy.graph)$node.size))
plot(toy.graph, layout = layout.fruchterman.reingold(toy.graph),
     vertex.label=NA, edge.width=E(toy.graph)$weight, 
     edge.arrow.size=0.005, edge.arrow.width=0.0000001)

这是一个示例情节:

[1]: https://i.stack.imgur.com/iCx

当我为edge.arrow.size取稍大的值时看起来更糟糕  和edge.arrow.width

我的代码出了什么问题?它可以与R版本有关吗?我以前做过很多情节,使用非常相似的命令,我从来没有遇到过问题。

以下是包含nodes infoedge list的文件。

3 个答案:

答案 0 :(得分:1)

所以看起来问题在于R如何在我的计算机上显示图形。何时,我不是直接在控制台中绘制图形,而是将其保存到文件中,一切看起来都很好。这是我正在使用的代码,以防其他人遇到类似的问题:

png("my-plot.png", width=1200, height=1200)
par(mar=c(0,0,0,0))
plot(mat_gr, layout = layout.auto(mat_gr), vertex.label=NA,   
     edge.width=E(mat_gr)$weight)
dev.off()

我意识到它并没有解决显示巨大箭头的问题,但至少它可以生成保存可用的图。

答案 1 :(得分:1)

使用plot.igraph()而不是简单地使用plot()可能会有所帮助。

答案 2 :(得分:0)

参数 edge.arrow.size 可能有助于减小箭头尺寸。通过此link,可在绘图功能文档中找到更多信息。基本上,我们可以通过在参数前面添加顶点/边来使用所有列出的参数。

plot(g2, edge.arrow.size = 0.1)