我有一个没有坐标的邻接矩阵,我想用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坐标。
很抱歉,如果我原来的问题太模糊,我希望这更好
答案 0 :(得分:1)
对于正在寻找此问题答案的任何人来说,原始的传记对象不包含位置信息,只有在查看对象时才会计算 - 所以为了找到需要引用图形句柄的信息,而不是原始对象。这可以使用:
完成h.nodes(3).Position