python - Dash_table:SyntaxError:位置参数跟随关键字参数
问题描述
我想用破折号建立一个网络。
我有这个数据框(称为 final_net):
Entrez Gene Interactor A Entrez Gene Interactor B
0 6840 7431
1 6640 5217
2 823 7431
3 57019 57019
如果我将该数据框转换为这种列表:
dash_elements = []
for index,i in final_net.iterrows():
dict1 = {}
dict2 = {}
dict1['data'] = dict2
dict2['id'] = str(i[0])
dict2['label'] = str(i[0])
dict3 = {}
dict1['data'] = dict3
dict3['id'] = str(i[1])
dict3['label'] = str(i[1])
final_dict2 = {}
final_dict3 = {}
final_dict2['data'] = dict2
final_dict3['data'] = dict3
dash_elements.append(final_dict2)
dash_elements.append(final_dict3)
dict4 = {}
final_dict4 = {}
final_dict4['data'] = dict4
dict4['source'] = str(i[0])
dict4['target'] = str(i[1])
dash_elements.append(final_dict4)
print(dash_elements)
然后像这样将数据读入破折号:
import dash
import dash_core_components as dcc
from dash import html
import dash_cytoscape as cyto
from dash.dependencies import Input, Output
import plotly.express as px
app = dash.Dash(__name__)
app.layout = html.Div([
html.P("Dash Cytoscape:"),
cyto.Cytoscape(
id='cytoscape',
elements = dash_elements,
layout={'name': 'breadthfirst'},
style={'width': '1000px', 'height': '1000px'}
)
])
if __name__ == '__main__':
app.run_server()
网络按预期生成。
我想知道这是否可以通过将数据帧直接读入网络来更优雅地完成。
我想在这里实现答案,所以我写道:
from dash import dash_table
dt_col_param = []
for col in final_net.columns:
dt_col_param.append({"name": str(col), "id": str(col)})
import dash
import dash_core_components as dcc
from dash import html
import dash_cytoscape as cyto
from dash.dependencies import Input, Output
import plotly.express as px
app = dash.Dash(__name__)
app.layout = html.Div([
html.P("Dash Cytoscape:"),
cyto.Cytoscape(
id='cytoscape',
dash_table.DataTable(
columns=dt_col_param,
data=final_net.to_dict()),
layout={'name': 'breadthfirst'},
style={'width': '1000px', 'height': '1000px'}
)
])
if __name__ == '__main__':
app.run_server()
但它返回错误:
File "<ipython-input-93-2fb47236fbc6>", line 31
dash_table.DataTable(
^
SyntaxError: positional argument follows keyword argument
而且我不明白我做错了什么。有人可以解释/告诉我如何纠正这个吗?
解决方案
好吧,正如错误所说,您忘记了参数的关键字(即“元素”):
app.layout = html.Div(
[
html.P("Dash Cytoscape:"),
cyto.Cytoscape(
id="cytoscape",
elements=dash_table.DataTable(
columns=dt_col_param, data=final_net.to_dict()
),
layout={"name": "breadthfirst"},
style={"width": "1000px", "height": "1000px"},
),
]
)
但这也不太有效,因为这不是对象的有效输入elements
——cyto.Cytoscape
这需要
如果我有时间,我会回来并提供更完整的答案,但希望这可能足以帮助您了解如何实施......
推荐阅读
- javascript - 令牌什么也没给我,我检查了我的代码很多次
- java - 如何以不同的批量大小批量处理具有相似参数的代理?
- php - 谷歌云如何使用 php 通过服务帐户获取 ID 令牌
- javascript - 如何将对象作为格式化的 JSON 对象复制到剪贴板?
- node.js - 请求在 Postman 上工作,但在 Node JS 上收到 403
- reactjs - Nx React 在运行时注入环境变量
- python - 有没有办法查看张量板图中的参数总数?
- css - 为什么我的图像使用旋转后会出现垂直滚动条?
- python - Elasticsearch 和 S3 存储桶:如何让 Python 检测来自 s3 存储桶的数据是否已经在弹性搜索中?
- ruby-on-rails - React::ServerRendering::PrerenderError - Rails 5,React 预渲染问题