0

尽管neighborNets 相对流行,但我找不到以下问题的任何解决方案。在 R 中,我正在尝试绘制一个 neighborNet(使用包创建phangorn,对象类网络)。该包igraph用于绘制静态 2D 图形,因此每次我重新绘制图形时,布局都会更改/旋转(igraph显然是默认行为)。现在,如果我要绘制一个普通的 igraph,我只需保存布局,然后继续重复使用它:

fixed = layout.sphere(somegraph)
plot(somegraph, layout=fixed)

但这不适用于当前的问题。plot.networx 的帮助文件确实提到了 igraph 和布局,但仅在“另见”部分中。手动创建 xy 坐标矩阵是行不通的(如此处所建议),节点标签/节点提示的位置在邻居网上很重要。我试过

library("phangorn")
library("igraph")
mydist = dist(matrix(sample(100), ncol=10))  # example data
nnet = neighborNet(mydist)
fixed = layout.sphere(nnet)  # error, Not a graph object
fixed = layout.sphere(as.igraph(nnet))  # doesn't work properly, mangled graph

所以问题是,如何让它在

plot.networx(nnet, type="2D", layout = fixed)  # ?
4

1 回答 1

0

plot.networx调用phangorn:::coords以获取(对于 2D)创建igraph对象然后使用的坐标layout.kamada.kawai。这都是硬编码的plot.networx,不够灵活,以至于您可以使用另一种布局算法。

您可以按照中的代码phangorn:::coords创建图形布局并用另一个布局函数替换布局函数,然后phangorn:::plot2D使用这些坐标调用。看看plot.networx如何phangorn:::plot2D正确调用。

于 2015-07-09T16:43:28.220 回答