2

有没有办法可以将坐标矩阵提供给 igraph 中的 tkplot 函数?我尝试将布局参数设置为我的坐标矩阵,但它只会产生一个空白图。

我能够将坐标输入 plot.igraph() 并生成一个有向的加权边缘图,其中顶点位于我想要的位置。但是,箭头很时髦。箭头放置在边缘下方,因此如果边缘足够宽(我的一些),那么箭头至少部分隐藏。我试过改变边缘和箭头的宽度,但我的一些边缘的权重太大了。tkplot 中产生的箭头更接近我想要的。

下面的第一个图对应于用 plot.igraph 制作的不需要的箭头。第二个图是来自 tkplot 的所需箭头。

我不想要的箭头:

坏箭

我想要的箭头:

好箭头

我需要做一个或另一个的原因是因为我需要在完全相同的位置制作更多这些图表,并且不想继续使用 tkplot 手动移动每次都有节点。我有很多,而且也不可能让它们处于与以前完全相同的位置。

希望这足够具体。这是我第一次发帖,所以请让我知道我应该包括哪些其他信息。我尝试在 R 2.15 和运行 2.11 的机器上以及 igraph 包 0.5.5 和 igraph 0.6.5 上给出 tkplot 坐标。

如果这是在某个地方,真的很抱歉浪费时间。我已经花了一段时间寻找并试图与我的研究生 PI 一起努力解决这个问题,而且我们已经陷入死胡同好几天了。感谢您的任何反馈。

4

1 回答 1

0

不幸的是,无法修改箭头的外观,我同意这很糟糕,尤其是因为它们很丑。

为了更具建设性,您可以使用tkplot()绘图,您实际上可以使用一些技巧并使用内部 igraph 函数自动将它们保存到文件中。下面是一个例子。这够好吗?

library(igraph)
set.seed(1)
g <- graph.star(10, center=10) %u% graph.ring(9, directed=TRUE)
E(g)$width <- sample(1:10, ecount(g), replace=TRUE)
lay <- layout.auto(g)

id <- tkplot(g, layout=lay)
tkp <- igraph:::.tkplot.get(id)
tkpostscript(tkp$canvas, file="/tmp/output.eps")
tkplot.close(id)

阴谋

于 2013-03-22T20:51:02.307 回答