将坐标输入tkplot()或使用plot.igraph()中的tkplot箭头

时间:2013-03-22 18:03:36

标签: r igraph tkplot

有没有办法可以将坐标矩阵输入igraph中的tkplot函数?我已经尝试将layout参数设置为我的坐标矩阵,但它只是产生一个空白图。

我能够将坐标提供给plot.igraph()并生成一个有向的加权边缘图,其中顶点位于我想要的位置。但是,箭头很时髦。箭头放置在边缘下方,这样如果边缘足够宽(我的一些边缘),则箭头至少部分隐藏。我已经尝试过更改边缘和箭头宽度但是我的一些边缘只是加权太多了。 tkplot中生成的箭头更接近我想要的。

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

我不想要的箭头:

badarrows

我想要的箭头:

goodarrows

我需要做一个或另一个的原因是因为我需要用完全相同位置的节点制作更多这些图形,并且不希望继续使用tkplot来处理 - 每次移动节点。我有很多它们,也不可能让它们和以前完全一样。

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

真的很抱歉浪费时间,如果它在某处。我已经花了一段时间看着试图与我的毕业生PI一起解决问题,我们已经在几天内达到了死胡同。感谢您的任何反馈。

1 个答案:

答案 0 :(得分: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)

plot