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

2024-09-27 17:52:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

 elements = [{'data': {'id': 'a', 'label': 'a', 'level': 1},
             {'data': {'id': 'b', 'label': 'b', 'level': 1},
             {'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();
  }

如何设置此同心参数

干杯


Tags: 方法nameidnode元素data节点定义
1条回答
网友
1楼 · 发布于 2024-09-27 17:52:11

不幸的是,无法将python函数传递给cyto.Cytoscape组件中的layout参数。这是因为函数不会被传输到JS函数,这是concentric键在options内工作所需的

替代办法是:

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

相关问题 更多 >

    热门问题