您好,我是 Dash 新手,我正在按照https://dash.plot.ly/getting-started页面上的教程进行操作,但出现错误,指出未安装 msgpack。我稍后安装了它,然后运行页面上给出的以下代码。
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A Web Application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data':[
{'x':[1,2,3],'y':[2,4,1],'type':'bar','name':'SF'}
],
'layout': {
'title':'Dash Data Visualisation'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
当我继续访问http://127.0.0.1:8050/时,出现以下错误
Error loading layout
Run Code Online (Sandbox Code Playgroud)
我阅读了 dash 文档和社区帮助,提出了一些类似的问题,但我无法理解它们。请帮忙。
我 \xe2\x80\x99m 是 Flask 和部署过程的新手\n我的 dash.py 设置如下
\n\nserver = flask.Flask(__name__)\napp = dash.Dash(__name__, server=server)\nRun Code Online (Sandbox Code Playgroud)\n\n和我的 nginx 文件
\n\nserver {\nlisten 80;\nserver_name localhost;\ncharset utf-8;\nclient_max_body_size 75M;\n\nlocation / {try_files $uri @yourapplication; }\nlocation @yourapplication {\n include uwsgi_params;\n uwsgi_pass unix:/var/www/School-Dashboard/dash_clean.sock;\n}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6but i\xe2\x80\x99m 不确定我必须在 wsgi ini 文件中设置模块参数。
\n\n[uwsgi]\n#application's base folder\nbase = /var/www/School-Dahboard\n\n#python module to import\nmodule = dash_clean:app #?????? WHAT DO I DO HERE\n\n#home = %(base)/venv\npythonpath = %(base)\n\n#socket file's location\nsocket = /var/www/School-Dashboard/dash_clean.sock\n\n#permissions for the socket file\nchmod-socket = 660\n\n\n#location of log files\nlogto = /var/log/uwsgi/%n.log\nRun Code Online (Sandbox Code Playgroud)\n\n … 我试图返回一个条形图,但用于条形图的列根据下拉值选择而变化。我将字典返回到 graph.figure 输出,但收到以下错误;
dash.exceptions.InvalidCallbackReturnValue:
The callback for property \figure``
of component \graph-one` returned a value`
which is not JSON serializable.
In general, Dash properties can only be
dash components, strings, dictionaries, numbers, None,
or lists of those.
Run Code Online (Sandbox Code Playgroud)
我的返回值是一本字典。代码如下;
def create_grouped_bar(df):
return [
go.Bar(
x=df['date'],
y=df[col],
text=df[col],
hoverinfo='text+name',
name=col.title(),
)
for col in df.columns
]
@app.callback(
Output('graph-one', 'figure'),
[Input('filtered_df', 'children'),
Input('freq-radio', 'value'),
Input('graph-one-drop', 'value'),
Input('graph-one-radio', 'value')])
def update_graph(df_json, freq, cols, amount):
dff = pd.read_json(df_json, orient='split')
plot_cols = falls_dd_dict[cols]
plot_df = dff[['date_time_occurred']+plot_cols].copy() …Run Code Online (Sandbox Code Playgroud) 我正在使用 DASH 库,我的应用程序现在有多个选项卡,但我需要让每个选项卡都有不同的 URL,有人能做到这一点吗?
我想在我正在Beeware上开发的 Android 应用程序中使用破折号交互式图表。如何将 Dash Plotly 与 Beeware 结合使用?
我想使用 rq 在单独的工作人员上运行任务,以从测量仪器收集数据。用户按下仪表板应用程序上的按钮将发出任务结束的信号。问题是任务本身不知道何时终止,因为它无权访问 dash 应用程序的上下文。
我已经习惯meta将信息从工作人员传递回调用者,但是我可以将信息从调用者传递给工作人员吗?
示例任务:
from rq import get_current_job
from time import time
def mock_measurement():
job = get_current_job()
t_start = time()
# Run the measurement
t = []
i = []
job.meta['should_stop'] = False # I want to use this tag to tell the job to stop
while not job.meta['should_stop']:
t.append(time() - t_start)
i.append(np.random.random())
job.meta['data'] = (t, i)
job.save_meta()
sleep(5)
print("Job Finished")
Run Code Online (Sandbox Code Playgroud)
从控制台,我可以开始这样的工作
queue = rq.Queue('test-app', connection=Redis('localhost', 6379))
job = queue.enqueue('tasks.mock_measurement')
Run Code Online (Sandbox Code Playgroud)
我希望能够从控制台执行此操作,以向工作人员表明它可以停止运行:
job.meta['should_stop'] = True
job.save_meta() …Run Code Online (Sandbox Code Playgroud) 我有一个带有可删除行和列的破折号 DataTable 对象。我想根据可见行更新数字。我不确定如何创建回调以及要传递哪些参数。当在浏览器中删除行时,存储在表对象中的数据实际上可能不会改变。
from dash_table import DataTable
def lineplot(id, df, cols, title=None, xlabel=None, ylabel=None, x=None,
xaxis_type=None, yaxis_type=None, plotly_config=plotly_config,
):
if x is None:
x_values = df.index
xlabel = df.index.name
else:
x_values = df[x]
data = [{
'x': x_values,
'y': df[col],
'name': col } for col in cols]
layout = go.Layout(
title=go.layout.Title(
text=title,
xref='paper',
xanchor='center'
),
xaxis = go.layout.XAxis(
title=go.layout.xaxis.Title(
text=xlabel,
font=plotly_config['font'],
),
type=xaxis_type
),
yaxis=go.layout.YAxis(
title=go.layout.yaxis.Title(
text=ylabel,
font=plotly_config['font'],
),
type=yaxis_type
),
showlegend=True
)
return dcc.Graph(
id=id,
figure={'data': data,
'layout': layout}, …Run Code Online (Sandbox Code Playgroud) 使用 Django-plotly-dash 模块和 dash 应用程序在一个非常小的窗口中渲染。除了典型的 css 之外,我还能做些什么来渲染这个完整的页面吗?
我尝试过更新特定 div 的样式以及更新整个页面中的样式。
...
{% extends 'base_page.html' %}
{% block content %}
<head>
</head>
<body>
{%load plotly_dash%}
<div class={% plotly_class name="SimpleExample"%}>
{% plotly_app name="SimpleExample" %}
</div>
</body>
{% endblock %}
...
Run Code Online (Sandbox Code Playgroud)
期望 div 是整页,但它只呈现一个非常小的窗口
我试图在使用 CSS 属性更新 Dash 图形时显示微调器data-dash-is-loading。
我找到了一个可行的解决方案,但想知道为什么我之前的方法无法获得更多见解。
文档的结构是
html.Div(id="some-container",
children=[dcc.Graph(id="some-graph",
figure=fig)])
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的两个回调函数,一次一个。工作回调函数更新整个容器的子级:
@app.callback(
Output("some-container", "children"),
[Input("some-dropdown", "value")])
Run Code Online (Sandbox Code Playgroud)
不起作用的回调函数是
@app.callback(
Output("some-graph", "figure"),
[Input("some-dropdown", "value")])
Run Code Online (Sandbox Code Playgroud)
嗯,它工作得很好,它按应有的方式更新了图形,但它不会触发data-dash-is-loading.
CSS 代码取自这里:
*[data-dash-is-loading="true"]{
visibility: hidden;
}
*[data-dash-is-loading="true"]::before{
content: "Loading...";
display: inline-block;
color: magenta;
visibility: visible;
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我原因是什么吗?
我试图获取 URL 的当前路径以便对过滤器进行操作,但是当我调用时dcc.Location.pathname无法获取 URL。
知道如何获得它吗?
我尝试过print(Input('url', 'pathname'))但也不起作用。
任何想法?
谢谢