如何通过 Cytoscape.js 使用 Cola 按颜色和形状分隔节点

How to separate nodes by color and shape using Cola through Cytoscape.js

我有一个大型生物网络系统,其中混合了有向边和无向边。在这些网络中,我们有三个关键节点形状:三角形、椭圆形和矩形。节点为灰色或彩色。 我正在尝试使用 cytoscape-cola,无论图形大小如何,我是否能够快速、一致地将形状分离出来,这样三角形在图形的顶部,矩形在图形的顶部底部,中间有省略号。 理想情况下,我也希望能够按颜色将它们分开,如此 example

所示

到目前为止,我取得的成功有限。我尝试添加分别连接到所有三角形和矩形的源节点和汇节点,然后应用流。然而,这不起作用,因为图形似乎被过度约束了。我可以直接对齐每个节点,但这对于一般解决方案来说很慢且无效。我还尝试了复合节点,这让我更接近了,但是很难设置复合节点的位置,因为它依赖于其子节点的位置,这让我回到了第一步。最后,我最幸运的是将可乐应用于子图,但是,它需要我为每个子图计算边界框的位置,随着颜色的增加,这变得更加困难。

如有任何帮助,我们将不胜感激。

力导向布局将根据拓扑而不是分类来组织图表。对于您的用例,听起来您应该使用更具确定性的布局,例如网格 --- 将图形分组为三行。