微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python dash_cytoscape中设置同心圆布局参数?

如何解决如何在python dash_cytoscape中设置同心圆布局参数?

我定义了我的元素,比如 level 指的是我想要那个节点的圆层。

 elements = [{'data': {'id': 'a','label': 'a','level': 1},{'data': {'id': 'b','label': 'b',{'data': {'id': 'c','label': 'c','level': 2},.......]

我尝试了以下不起作用的方法错误加载布局)

app.layout = html.Div([
    cyto.Cytoscape(
        id='cytoscape',elements= elements,layout={'name': 'concentric','concentric': lambda x: x['data']['level']}
    )
])

javascript 文档在这里 https://js.cytoscape.org/#layouts 并指定

let options = {
  name: 'concentric',concentric: function( node ){ // returns numeric value for each node,placing higher nodes in levels towards the centre
  return node.degree();
  }

如何设置这个同心度参数?

干杯

解决方法

遗憾的是,无法将 Python 函数传递给 ValueError: Dimension 2 in both shapes must be equal,but are 2 and 1. Shapes are [?,16,2] and [?,1]. for '{{node model_4/concatenate_16/concat}} = ConcatV2[N=2,T=DT_FLOAT,Tidx=DT_INT32](model_4/conv2d_transpose_16/BiasAdd,model_4/conv2d_83/Relu,model_4/concatenate_16/concat/axis)' with input shapes: [?,2,256],[?,1,[] and with computed input tensors: input[2] = <3>. 组件中的 layout 参数。这是因为该函数不会被转译为 JS 函数,而这正是 cyto.Cytoscape 键在 concentric 中工作所需要的。

替代方案是:

  1. 使用 python 网络库(例如 networkX)根据同心算法分配 x/y 位置,然后使用 dash-cytoscape 中的自定义布局(而不是同心布局)返回准确位置。
  2. 修改 options 的源代码,并对要用于同心布局的 JS cyto.Cytoscape 进行硬编码。您需要按照贡献说明来构建和创建自定义安装。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。