我可以在MATLAB中从传记对象中提取坐标信息吗?

时间:2015-09-15 07:58:43

标签: matlab

我有一个没有坐标的邻接矩阵,我想用gplot很好地表示。

我能够将它显示为一个在所有节点之间有良好间距的传记对象,所以我想知道是否有办法从传记对象中提取坐标然后与gplot一起使用?

修改
由于某些原因,我对这个问题得到了一些负面反馈(没有评论),所以我将进一步详细说明。

我使用的数据用于表示为加权邻接矩阵的图表。我希望能够在MATLAB中使用gplot函数显示它,但是gplot需要每个顶点的笛卡尔坐标,我还没有给出信息。

我真的不想不得不去使用力导向图算法计算坐标以显示图形的麻烦,因为这样会有点过分,我只想要一种方法来显示图表使得顶点不是完全随机分布的。

一种简单的方法是使用这样的传记功能:

G = <adjacency matrix>
ids = <vertex labels>

bg = biograph(G,ids,'ShowArrows','off','ShowWeights','on',...
    'EdgeType','straight','LayoutType','equilibrium');

h=view(bg);

显示图表的合理外观,但是如果我不必使用传记环境而且我可以使用gplot代替我想要它。

MATLAB文档说要找到节点3的x-y坐标(例如)我可以使用:

bg.nodes(3).POSITION

查询节点的位置;但是当它这样做时它会返回[]

但奇怪的是,如果我双击图形表示中的节点,我可以在弹出窗口中访问此信息,所以我确定它存在于某个地方..

有没有人知道如何从传记对象中提取这些信息?我只需要一个n * 2矩阵,每个顶点都有x和y坐标。

很抱歉,如果我原来的问题太模糊,我希望这更好

1 个答案:

答案 0 :(得分:1)

对于正在寻找此问题答案的任何人来说,原始的传记对象不包含位置信息,只有在查看对象时才会计算 - 所以为了找到需要引用图形句柄的信息,而不是原始对象。这可以使用:

完成
h.nodes(3).Position