Cytoscape 布局使用节点属性作为坐标?
Cytoscape layout to use node attributes as coordinates?
有没有办法使用存储为每个节点的属性的 x,y 坐标来使用另一个程序计算的坐标来布置图形?
如果没有,是否有可能以某种方式实现这一点——人们如何着手呢?
是否有一种标准的方式来以某种方式向 cytoscape.js 网络查看器提供节点位置?
背景:使用Pythonnetworkx计算一些Cytoscape不支持的布局是微不足道的,将坐标存储为节点属性也是微不足道的。所需要的只是让 Cytoscape 以某种方式使用这些坐标来查找节点位置,而不是使用布局算法。
这是一件很容易做到的事情。在演示中使用此功能的许多示例,如您所见:
- 1: FCose Demo
- 2: Cose Blicent Demo
- 3: d3-force Demo
- 4: Euler Compound Demo
- 5: Spread Demo
如您所见,在演示中和文档中都有大量这方面的示例。你可以看到一个 here and here:
// can use reference to eles later
var eles = cy.add([
{ group: 'nodes', data: { id: 'n0' }, position: { x: 100, y: 100 } },
{ group: 'nodes', data: { id: 'n1' }, position: { x: 200, y: 200 } },
{ group: 'edges', data: { id: 'e0', source: 'n0', target: 'n1' } }
]);
.add()
函数中使用的 json 可以在您的 js 应用程序中创建,或直接在 Python 中创建,并像某些示例一样添加到图表中。
一般来说,您应该花一些时间浏览一下文档。通过 x 和 y 定位节点的能力是非常基本的,并且是文档中的第一页之一。
如果您不理解文档中的描述和我提供的示例,请编辑您的问题并将您当前的代码添加为 Minimal, Reproducible Example,您可以在其中展示您为实现定位所做的努力。
编辑:
正如@maxkfranz 指出的那样,preset layout plays a big role here. The documentation states this in the Initialisation Chapter:
- 如果您想自己在元素中指定节点位置 JSON,您可以使用预设布局——默认情况下它不设置任何位置,将节点保留在当前位置位置(即在初始化时在 options.elements 中指定).`
我是 Cytoscape 的新手,所以“简单”的事情对我来说并不那么容易。我常常甚至不知道提问的正确方式。每个人都有难的事和容易的事,我们一步一步地扩展知识,今天难的事明天可能会容易。
无论如何,这可能是您正在寻找的解决方案的一部分:
在 Cytoscape 桌面应用程序中,您可以创建一个将节点属性映射到“X 位置”并将另一个节点属性映射到“Y 位置”的“样式”。
有没有办法使用存储为每个节点的属性的 x,y 坐标来使用另一个程序计算的坐标来布置图形?
如果没有,是否有可能以某种方式实现这一点——人们如何着手呢?
是否有一种标准的方式来以某种方式向 cytoscape.js 网络查看器提供节点位置?
背景:使用Pythonnetworkx计算一些Cytoscape不支持的布局是微不足道的,将坐标存储为节点属性也是微不足道的。所需要的只是让 Cytoscape 以某种方式使用这些坐标来查找节点位置,而不是使用布局算法。
这是一件很容易做到的事情。在演示中使用此功能的许多示例,如您所见:
- 1: FCose Demo
- 2: Cose Blicent Demo
- 3: d3-force Demo
- 4: Euler Compound Demo
- 5: Spread Demo
如您所见,在演示中和文档中都有大量这方面的示例。你可以看到一个 here and here:
// can use reference to eles later
var eles = cy.add([
{ group: 'nodes', data: { id: 'n0' }, position: { x: 100, y: 100 } },
{ group: 'nodes', data: { id: 'n1' }, position: { x: 200, y: 200 } },
{ group: 'edges', data: { id: 'e0', source: 'n0', target: 'n1' } }
]);
.add()
函数中使用的 json 可以在您的 js 应用程序中创建,或直接在 Python 中创建,并像某些示例一样添加到图表中。
一般来说,您应该花一些时间浏览一下文档。通过 x 和 y 定位节点的能力是非常基本的,并且是文档中的第一页之一。
如果您不理解文档中的描述和我提供的示例,请编辑您的问题并将您当前的代码添加为 Minimal, Reproducible Example,您可以在其中展示您为实现定位所做的努力。
编辑:
正如@maxkfranz 指出的那样,preset layout plays a big role here. The documentation states this in the Initialisation Chapter:
- 如果您想自己在元素中指定节点位置 JSON,您可以使用预设布局——默认情况下它不设置任何位置,将节点保留在当前位置位置(即在初始化时在 options.elements 中指定).`
我是 Cytoscape 的新手,所以“简单”的事情对我来说并不那么容易。我常常甚至不知道提问的正确方式。每个人都有难的事和容易的事,我们一步一步地扩展知识,今天难的事明天可能会容易。
无论如何,这可能是您正在寻找的解决方案的一部分:
在 Cytoscape 桌面应用程序中,您可以创建一个将节点属性映射到“X 位置”并将另一个节点属性映射到“Y 位置”的“样式”。