如何将固定的 igraph 布局传递给 phangorn 中的 plot.networx?
How to pass a fixed igraph layout to plot.networx in phangorn?
尽管 neighborNets 相对流行,但我找不到以下问题的任何解决方案。在 R 中,我试图绘制一个 neighborNet(使用包 phangorn
、对象 class networx 创建)。该包使用 igraph
绘制静态二维图形,因此每次我重新绘制图形时,布局 changes/rotates(显然是 igraph
的默认行为)。现在,如果我要绘制一个普通的 igraph,我只需保存布局,然后继续重新使用它:
fixed = layout.sphere(somegraph)
plot(somegraph, layout=fixed)
但这对当前的问题不起作用。 plot.networx 的帮助文件确实提到了 igraph 和 layout,但只在 'See also' 部分。手动创建 x-y 坐标矩阵是行不通的(如建议 here),节点的节点 labels/tips 的位置在 neighbornet 上很重要。我试过了
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) # ?
plot.networx
调用 phangorn:::coords
获取坐标(对于 2D)创建一个 igraph
对象然后使用 layout.kamada.kawai
。这都是硬编码到 plot.networx
中,因此不够灵活,您可以使用其他布局算法。
您可以按照 phangorn:::coords
中的代码创建图形布局并将布局函数替换为另一个布局函数,然后使用这些坐标调用 phangorn:::plot2D
。请参阅 plot.networx
了解如何正确调用 phangorn:::plot2D
。
尽管 neighborNets 相对流行,但我找不到以下问题的任何解决方案。在 R 中,我试图绘制一个 neighborNet(使用包 phangorn
、对象 class networx 创建)。该包使用 igraph
绘制静态二维图形,因此每次我重新绘制图形时,布局 changes/rotates(显然是 igraph
的默认行为)。现在,如果我要绘制一个普通的 igraph,我只需保存布局,然后继续重新使用它:
fixed = layout.sphere(somegraph)
plot(somegraph, layout=fixed)
但这对当前的问题不起作用。 plot.networx 的帮助文件确实提到了 igraph 和 layout,但只在 'See also' 部分。手动创建 x-y 坐标矩阵是行不通的(如建议 here),节点的节点 labels/tips 的位置在 neighbornet 上很重要。我试过了
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) # ?
plot.networx
调用 phangorn:::coords
获取坐标(对于 2D)创建一个 igraph
对象然后使用 layout.kamada.kawai
。这都是硬编码到 plot.networx
中,因此不够灵活,您可以使用其他布局算法。
您可以按照 phangorn:::coords
中的代码创建图形布局并将布局函数替换为另一个布局函数,然后使用这些坐标调用 phangorn:::plot2D
。请参阅 plot.networx
了解如何正确调用 phangorn:::plot2D
。