Cytoscapejs:Sankey般的边缘尺寸

问题描述:

有没有一种方法可以像cytoscape.js中创建Sankey一样的边缘宽度图?要清楚,我不想在cytoscape.js中创建一个Sankey图。我所希望的是创建具有总共来自其节点的大小的边。Cytoscapejs:Sankey般的边缘尺寸

修改边缘宽度的一种方法是通过强度属性,但我没有找到一种方法来指定该属性与原始节点的大小相关。

在此先感谢

安迪

您可以使用数据映射,与刚刚成立data.width每个元素在初始化:

var cy = cytoscape({ 
    container: $('.cytoscape-container').get(0), 
    ..., 
    style: { 
    { 
     selector: 'edge', 
     style: { 
     'width': 'data(size)' 
     } 
    } 

    { 
     selector: 'node', 
     style: { 
     'width': 'data(size)', 
     'height': 'data(size)' 
     } 
    } 
    } 
}); 

或者,你可以使用类:

var cy = cytoscape({ 
    container: $('.cytoscape-container').get(0), 
    ..., 
    style: { 
    { 
     selector: 'edge.foo', 
     style: { 
     'width': 20 
     } 
    } 

    { 
     selector: 'node.foo', 
     style: { 
     'width': 20, 
     'height': 20 
     } 
    } 
    } 
}); 
+0

最好不要使用自定义函数,除非绝对必要 - 因为它现在意味着你负责微操作性能。除非您使用缓存,否则您将使用自定义函数创建大幅减速。此外,写作风格时的阅读风格没有意义,因为它创造了竞争条件。只需使用类或数字为样式表中的边和节点设置相同的宽度。使用样式表的内置功能,让图书馆为您完成繁重的工作。 – maxkfranz

+0

这是一个很好的观点,re:每个渲染中所有这些函数调用的性能。我没有用过很多大图来看它如何快速降级,文档没有强调“避免不必要的”心态......也许应该增加这些内容? 除非你建议他们应该程序化生成,否则类似乎不适合数据驱动的节点大小? – peteorpeter

+1

调用.data()在自动驾驶仪上的风格:它的perf都已经过优化。如果您调用.data()更改节点大小,则Cytoscape会自动执行缓存。如果您不能很好地管理函数调用,那么每次可能重新计算样式时,都需要这样做 - 因为Cytoscape无法对您的函数做出假设。像第二种静态样式表对于perf来说更好,因为Cytoscape可以对样式表块和diff-patch样式更新进行静态分析。 – maxkfranz