如何解决如何在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
中工作所需要的。
替代方案是:
- 使用 python 网络库(例如 networkX)根据同心算法分配 x/y 位置,然后使用 dash-cytoscape 中的自定义布局(而不是同心布局)返回准确位置。
- 修改
options
的源代码,并对要用于同心布局的 JScyto.Cytoscape
进行硬编码。您需要按照贡献说明来构建和创建自定义安装。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。