javascript - Cytoscape.js - 如何为复合节点使用一种布局,为复合节点的子节点使用另一种布局
问题描述
我正在尝试在 Cytoscape.js 中使用多种布局。具体来说,我正在尝试使用concentric
布局在一个圆圈中显示普通节点,在外圈中显示复合节点。对于每个复合节点,我希望关联的子节点使用circle
布局。
concentric
如果我只添加父节点,它们会正确显示在布局的外圈中。但是,一旦我添加了circle
子节点并为每组子节点运行布局,子节点(以及随后的父节点)就会呈现在整个图形的中心。我想知道是否可以渲染图形以使复合父节点保留其在外圈中的位置,并且子节点相对于其父节点的位置形成圆圈。
解决方案
父节点的位置不直接由布局设置。父节点没有独立的位置:http: //js.cytoscape.org/#notation/position
父节点的位置完全取决于其子节点的位置。布局将仅设置非父节点的位置。一些复合感知的布局,如 CoSE,将在定位子节点时考虑复合父节点,以最小化它们的面积。
因此,如果您想将复合节点定位在特定位置,请在其子节点(即children.layout().run()
)上运行布局,布局的边界框(boundingBox
)定义父节点的最大边界。
推荐阅读
- python - 正则表达式在 Python 中的字符串中查找键值对并将其保存在字典中
- javascript - React parse JSON from text
- excel - 获取同一列中要粘贴到项目符号列表中的单元格范围
- android - android studio:将生成签名包的密钥从一台计算机复制到另一台计算机
- bash - 如何从其他命令的输出动态构建 bash 对话框?
- assembly - 使用 SSE 进行打包 16 元素混合的最佳方法
- c - 已分配数组中的堆缓冲区溢出
- python - Python请求模块多线程
- c# - 仅用于路径的 Uri Builder
- python - TypeError: 'int' object is not iterable - MULTIPROCESSING using POOL