首页 > 解决方案 > Cytoscape.js - 如何为复合节点使用一种布局,为复合节点的子节点使用另一种布局

问题描述

我正在尝试在 Cytoscape.js 中使用多种布局。具体来说,我正在尝试使用concentric布局在一个圆圈中显示普通节点,在外圈中显示复合节点。对于每个复合节点,我希望关联的子节点使用circle布局。

concentric如果我只添加父节点,它们会正确显示在布局的外圈中。但是,一旦我添加了circle子节点并为每组子节点运行布局,子节点(以及随后的父节点)就会呈现在整个图形的中心。我想知道是否可以渲染图形以使复合父节点保留其在外圈中的位置,并且子节点相对于其父节点的位置形成圆圈。

标签: javascriptcytoscape.js

解决方案


父节点的位置不直接由布局设置。父节点没有独立的位置:http: //js.cytoscape.org/#notation/position

父节点的位置完全取决于其子节点的位置。布局将仅设置非父节点的位置。一些复合感知的布局,如 CoSE,将在定位子节点时考虑复合父节点,以最小化它们的面积。

因此,如果您想将复合节点定位在特定位置,请在其子节点(即children.layout().run())上运行布局,布局的边界框(boundingBox)定义父节点的最大边界。


推荐阅读