【问题标题】:Cytoscape layout to use node attributes as coordinates?Cytoscape 布局使用节点属性作为坐标?
【发布时间】:2020-05-29 21:38:26
【问题描述】:

有没有办法使用存储为每个节点属性的 x,y 坐标来使用由另一个程序计算的坐标来布局图形?

如果没有,是否有可能以某种方式实现这一点 - 如何开始?

是否有一种标准方法如何以某种方式向 cytoscape.js Web 查看器提供节点位置?

背景:使用 Python networkx 计算一些 Cytoscape 不支持的布局很简单,将坐标存储为节点属性也很简单。然后,Cytoscape 所需要的只是某种方式来使用这些坐标来查找节点位置,而不是使用布局算法。

【问题讨论】:

    标签: cytoscape


    【解决方案1】:

    这是一件很容易做到的事情。在演示中使用此功能的许多示例,您可以在此处看到:

    如您所见,演示中有大量示例,文档中也有。你可以看到一个herehere

    // 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 中创建,并像某些示例一样添加到图表中。

    一般来说,您应该花一些时间浏览一下文档。通过 xy 定位节点的能力非常基本,并且是文档中的第一页之一。

    如果您不理解文档中的描述和我提供的示例,请编辑您的问题并将您当前的代码添加为Minimal, Reproducible Example,您可以在其中展示您为实现定位所做的努力。


    编辑:

    正如@maxkfranz 所指出的,preset layout 在这里发挥了重要作用。文档在Initialisation Chapter 中说明了这一点:

    • 如果你想在你的元素 JSON 中自己指定你的节点位置,你可以使用预设布局——默认情况下它不设置任何位置,让你的节点保持在当前位置(即在初始化时在 options.elements 中指定).`

    【讨论】:

    • 可能还值得一提的是在初始化时使用预设布局
    【解决方案2】:

    我是使用 Cytoscape 的新手,所以“简单”的事情对我来说并不那么容易。我常常连问问题的正确方法都不知道。每个人都有难的事情和容易的事情,我们一步一步地扩展我们的知识,所以今天的困难明天可能会变得容易。

    无论如何,这可能是您正在寻找的解决方案的一部分:

    在 Cytoscape 桌面应用程序中,您可以创建一个“样式”,将一个节点属性映射到“X 位置”,将另一个节点属性映射到“Y 位置”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2012-06-30
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2017-07-05
      相关资源
      最近更新 更多