当前位置: 首页 > 知识库问答 >
问题:

使用igraph绘制网络时的巨大箭头头

漆雕彦
2023-03-14

编辑我试图找出我的代码有什么问题,我开始绘制简单的图形,看看箭头在较小的图形上会是什么样子。我听到以下命令:

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

 [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)

下面是一个示例图:

当我为edge取稍大的值时,情况看起来更糟。箭尺寸和边缘。箭宽度

我的代码有什么问题?这可能与R的版本有关吗?我以前用非常类似的命令绘制了很多图,我从来没有遇到过问题。

这里是带有节点信息和边缘列表的文件。

共有3个答案

高峻
2023-03-14

参数“边”。箭尺寸可能有助于减小箭头的尺寸。通过此链接,可以获得更多有关绘图功能文档的信息。基本上,我们可以通过在参数前面添加顶点/边来使用所有列出的参数。

plot(g2, edge.arrow.size = 0.1)
皇甫宇定
2023-03-14

在这里,使用plot.igraph()而不是简单的图()可能会有所帮助。

章嘉致
2023-03-14

所以问题似乎是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()

我意识到它并不能解决显示巨大箭头的问题,但至少它允许生成保存可用的图形。

 类似资料:
  • 主要内容:示例可以使用类的方法在图像上绘制箭头线。 以下是这种方法的语法 - 该方法接受以下参数 - mat - 表示要在其上绘制矩形的图像的对象。 pt1 和 pt2 - 两个对象,表示要绘制的矩形的顶点。 color - 表示矩形颜色的标量对象(BGR)。 示例 以下程序演示如何在图像上绘制箭头线并使用JavaFX窗口显示它。 执行上面示例代码,您将会看到以下结果 -

  • 问题内容: 我刚接触Android,并且一直在研究Canvas。我正在尝试绘制箭头,但是在绘制轴时运气不好,没有一个箭头在起作用。 我进行了一些搜索,找到一个Java示例,但是Android没有or 。 现在,我的代码如下所示(箭头看上去完全不像箭头): 我查看了以下线程以获取指导: * http://www.java-forums.org/awt-swing/6241-how-u-rotate-

  • 我想画一些垂直线来跟踪任务,如下图中的红线所示。我相信可以使用甘特图绘制器绘制线条。 我想要的是在绘制任务期间存储直线endpoint的坐标,然后最终在绘图中绘制这些直线。 我想知道是否有一种方法可以让你在绘图上绘制任何东西,以及这是否是解决这个问题的正确方法。 以下是我的甘特图渲染器代码: 更新: 似乎LineAnnotics是实现这些行的最佳方式。Link1

  • 我使用Networkx创建了一个图形网络,并使用Mayavi绘制。 创建图形后,我将删除具有度的节点 我想询问有关如何删除删除的节点和相应位置并在输出中显示其余节点的建议。 其次,我想知道如何以交互方式删除节点和连接到这些节点的边。例如,如果要删除连接到度节点的节点和边 编辑:我试图从数据帧中删除已删除节点的位置,方法是在上面发布的完整代码中包含更新。 但我仍然没有得到正确的输出。

  • 问题内容: 我想通过Java绘制有向箭头。 目前,我正在使用课堂画线 但是仅出现该行,而没有出现定向箭头。 用于绘制有向箭头。当两个线段相遇时应用。 我正在绘制的线与矩形的边界相交,但未绘制有向箭头。仅画一条简单的线。 我有什么想念的吗? 问题答案: 如果折角处于特定角度,则在折线的线段之间绘制斜角。如果您绘制的线恰巧是在某些具有某种特定颜色的其他像素附近绘制的,则没有任何关系- 绘制矩形后,Gr

  • 我正在使用igraph包绘制如下网络,但我希望能够显示图中的所有节点(作者),即使是那些没有与其他人联合论文的作者。这可能吗? 我想显示网络,然后将“KS”作者显示为图中的单个节点。