Javascript Cytoscapejs:Sankey样边缘大小

Javascript Cytoscapejs:Sankey样边缘大小,javascript,css,cytoscape.js,sankey-diagram,Javascript,Css,Cytoscape.js,Sankey Diagram,有没有办法在cytoscape.js中创建类似Sankey的边缘宽度图?为了清楚起见,我不想在cytoscape.js中创建一个Sankey图。我要做的是创建边,这些边的总大小与它们起源的节点的大小相同 修改边宽度的一种方法是通过强度属性,但我没有找到一种方法来指定与原始节点大小相关的此属性 提前谢谢 Andy您可以使用数据映射器,只需在init处为每个元素设置data.width: var cy = cytoscape({ container: $('.cytoscape-containe

有没有办法在cytoscape.js中创建类似Sankey的边缘宽度图?为了清楚起见,我不想在cytoscape.js中创建一个Sankey图。我要做的是创建边,这些边的总大小与它们起源的节点的大小相同

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

提前谢谢


Andy

您可以使用数据映射器,只需在init处为每个元素设置
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
      }
    }
  }
});

除非绝对必要,否则最好不要使用自定义函数,因为这意味着您现在负责微观管理性能。除非使用缓存,否则将使用自定义函数创建较大的减速。此外,当书写风格的时候,阅读风格是没有意义的,因为它创造了一个种族条件。只需使用类或数字为样式表中的边和节点设置相同的宽度。使用样式表的内置功能,让库为您完成繁重的工作。这是一个很好的观点,关于:每个渲染中所有这些函数调用的性能。我还没有用大图(很多)来观察它退化的速度,文档也没有强调“除非必要否则避免”的心态。。。也许应该加上这一点?类似乎不太适合数据驱动的节点大小,除非您建议它们应该按程序生成?对.data()的调用都是以自动驾驶方式进行的:它都是为性能而优化的。如果调用.data()更改节点大小,则Cytoscape会自动执行缓存。如果你不能很好地管理你的函数调用,每次可以重新计算样式的时候,它都需要重新计算——因为Cytoscape不能对你的函数做出假设。像第二个这样的静态样式表对于perf来说更好,因为Cytoscape可以对样式表块进行静态分析和diff补丁样式更新。在引入函数值的地方,有一个关于perf的红色警告。标题为“性能”的部分顶部附近还有一条警告。也许第一个警告应该更高一些,否则不确定如何改进警告…下面的警告将在2.7.7文档版本中向上移动