标签: plotly-dash

Dash:更新图形的数据而不是更新图形的图形?

我正在阅读一些教程,包括官方文档,似乎每个人都更Output喜欢figure.

例如:

@app.callback(
    Output('graph-with-slider', 'figure'),
    Input('year-slider', 'value'))
def update_figure(selected_year):
    filtered_df = df[df.year == selected_year]

    fig = px.scatter(filtered_df, x="gdpPercap", y="lifeExp",
                     size="pop", color="continent", hover_name="country",
                     log_x=True, size_max=55)

    fig.update_layout(transition_duration=500)

    return fig
Run Code Online (Sandbox Code Playgroud)

为什么不只将数据输出到data图形字段呢?

是否可以?

python plotly plotly-dash

3
推荐指数
1
解决办法
1795
查看次数

带女服务员的 Python Dash 服务器

我有一个用 Dash 框架编写的仪表板应用程序。它还具有一些使用 Flask 编写的 Restful API。我正在将 Flask 应用程序添加到 Dash 服务器,如下所示

import dash
import flask
import dash_bootstrap_components as dbc

flask_server = flask.Flask(__name__)
app = dash.Dash(__name__,server=flask_server, external_stylesheets=[dbc.themes.BOOTSTRAP])
Run Code Online (Sandbox Code Playgroud)

并且正在运行服务器

from dashboard import app
from waitress import serve

if __name__ == "__main__":
    app.title = 'Litmus'
    app.run_server(debug=False)
    # serve(app,host="0.0.0.0",port=8050)
Run Code Online (Sandbox Code Playgroud)

上面的代码在我使用时工作正常app.run_server(debug=False),但当我使用 waitress 运行服务器时它会抛出异常。当我使用以下几行时

#app.run_server(debug=False)
serve(app,host="0.0.0.0",port=8050)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ERROR:waitress:Exception while serving /
Traceback (most recent call last):
  File "C:\Users\litmus\AppData\Roaming\Python\Python38\site-packages\waitress\channel.py", line 397, in service
    task.service()
  File "C:\Users\litmus\AppData\Roaming\Python\Python38\site-packages\waitress\task.py", line 168, in service
    self.execute()
  File "C:\Users\litmus\AppData\Roaming\Python\Python38\site-packages\waitress\task.py", line 434, …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x waitress plotly-dash

3
推荐指数
1
解决办法
5234
查看次数

类型错误:传递给 Series.__format__ 的格式字符串不受支持

我试图在我的仪表卡上添加千位分隔符,但我所有的努力都是徒劳的。发现这个解决方案更准确,但它给了我一个错误

类型错误:传递给系列的格式字符串不受支持。格式

@app.callback(
[Output('sls', 'children'),
Output('wngs', 'children'),
Output('rvne', 'children')],
Input('year', 'value')
)

def card_update(select_year):
dff=df_good.copy()
df_formattedd=dff.groupby(['year'], as_index=False)[['Net Sale', 'Winnings','Revenue']].sum()
df_formattedd[['Net Sale','Winnings','Revenue']]=df_formattedd[['Net Sale','Winnings','Revenue']].apply(lambda x:round(x,2))
df_formattedd[['Net Sale','Winnings','Revenue']]= df_formattedd[['Net Sale','Winnings','Revenue']].apply(lambda x: f'{x:,}')
sales=df_formattedd[df_formattedd['year']==select_year]['Net Sale']
winnings=df_formattedd[df_formattedd['year']==select_year]['Winnings']
revenue=df_formattedd[df_formattedd['year']==select_year]['Revenue']

return sales, winnings, revenue
Run Code Online (Sandbox Code Playgroud)

python pandas plotly plotly-dash

3
推荐指数
1
解决办法
1万
查看次数

本地 HTML 文件无法正确加载到 Dash 应用程序中

我尝试将本地 html 文件嵌入到基本的 Dash 应用程序中。我使用了此链接中的代码,并将路径替换为我的本地相对路径(破折号应用程序与 html 本地页面位于同一文件夹中)

html.Iframe(src="random_example.html",
            style={"height": "1067px", "width": "100%"})
Run Code Online (Sandbox Code Playgroud)

但这是我得到的结果:html.H1 彼此重复

html css python path plotly-dash

3
推荐指数
1
解决办法
4172
查看次数

我试图通过点击破折号应用程序中的按钮重定向到不同的页面,但它不起作用

import datetime
import sqlite3
import webbrowser
from time import sleep
import dash
import dash_html_components as html
import dash_core_components as dcc

from flask import Response

app = dash.Dash()
server = app.server

app.layout = html.Div([html.H1('Graphs will be added here'),
                       html.P('click on LOG_VIEW to view logger'),
                       dcc.Link(
                           html.Button('LOG_VIEW'),
                           href='/log_stream')])

latest_sno = 0

def flask_logger():
    """creates logging information"""
    global latest_sno, data
    values = ''
    connection = sqlite3.connect(r'C:\Users\rohit\Desktop\newbase.db')
    s = ''
    while True:
        try:
            data = connection.cursor()
            pt = data.execute(f"Select * FROM cvt WHERE SNO …
Run Code Online (Sandbox Code Playgroud)

python plotly-dash

3
推荐指数
1
解决办法
7527
查看次数

Dash/Plotly - long_callback 在 celery/redis 后端失败

概括

\n

我\xe2\x80\x99一直在开发一个使用 的 dash 应用程序long_callback,并且为了开发,我\xe2\x80\x99一直在diskcache为我的 使用后端long_callback_manager,正如我在这里找到的指南所建议的:https://dash.plotly。 com/长回调

\n

当我尝试使用 Gunicorn 运行我的应用程序时,它无法启动,因为diskcache. 因此,我决定切换到 celery/redis 后端,因为 \xe2\x80\x99s 无论如何都建议用于生产。

\n

我运行了一个 redis 服务器(正确响应 with redis-cli pingPONG,然后再次启动该应用程序。这次它启动得很好,所有正常的回调都起作用,但不起作用long_callback

\n

细节:

\n
    \n
  • 页面或多或少挂起,页面标题在正常标题和标题之间闪烁Updating...,表明应用程序认为\xe2\x80\x99s\xe2\x80\x9c正在等待\xe2\x80\x9d的响应/更新这long_callback
  • \n
  • 由运行参数设置的值long_callback被设置为它们的起始值,表明应用程序识别出long_callback应该运行。
  • \n
  • 通过将打印语句放置在函数内的第一行long_callback并看到它没有打印,我确定该函数永远不会启动。
  • \n
  • 使用gunicorn 和不使用gunicorn 都会发生故障。
  • \n
\n

这些细节都表明问题出在 celery/redis 后端。无论是在客户端/浏览器上还是在服务器\xe2\x80\x99s stdout/sterr 上都没有显示错误。

\n

如何让 celery/redis 后端工作?

\n

更新:在意识到该变量正在被使用并且其值根据引用它的文件而变化之后,我还尝试将创建和 的__name__代码移至,但无济于事。完全相同的事情发生了。celery_appLONG_CALLBACK_MANAGERapp.py …

python redis celery plotly-dash

3
推荐指数
1
解决办法
3479
查看次数

ImportError:无法从部分初始化的模块“dash”导入名称“dcc” - python

我对 python/dash/plotly 很陌生,并且不断收到相同的错误:

ImportError:无法从部分初始化的模块“dash”导入名称“dcc”(很可能是由于循环导入)

有谁知道如何解决这一问题?我导入了以下内容:

from dash import dcc
from dash import html
from dash.dependencies import Input, Output
import plotly.io as pio
Run Code Online (Sandbox Code Playgroud)

python dashboard importerror plotly-dash plotly-python

3
推荐指数
1
解决办法
1万
查看次数

尝试使用 python 映像安装 Fiona 时 Docker 构建失败

我想使用 Python Dash 应用程序构建 Docker 容器。该应用程序需要地理空间包,例如 Geopandas、Folium、Shapely。当尝试构建 Docker 镜像时,尝试安装 Fiona 时失败,它说它需要 GDAL。我不确切知道如何将 gdal 包安装到基础映像中。

Dockerfile

FROM python:3.8-slim
WORKDIR /code 
COPY ./requirements.txt /code/requirements.txt
RUN pip install -r requirements.txt && rm -rf /root/.cache
COPY ./ /code/
CMD ["gunicorn","-b","0.0.0.0:8080","index:server"]
Run Code Online (Sandbox Code Playgroud)

要求.txt

attrs==21.2.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
branca==0.4.2; python_version >= "3.5"
brotli==1.0.9; python_version >= "3.6"
certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
charset-normalizer==2.0.10; python_full_version >= …
Run Code Online (Sandbox Code Playgroud)

python docker fiona geopandas plotly-dash

3
推荐指数
1
解决办法
2069
查看次数

如何通过 Dash 应用程序中的回调更新输入组件

语境 :

我有一个带有下拉菜单和地图的 Dash 应用程序。

该地图显示 3 个 ID 为“01”、“02”和“03”的标记。我可以点击一个标记并通过回调返回其 ID。

下拉列表使我能够通过 ID 选择标记。

我想要做的是使用地图上选定的标记更新下拉列表中的选定值。

示例:我想选择“02”。我可以通过在下拉列表中选择“02”或单击地图上的“02”来完成此操作。但如果我从地图中选择它,我希望从下拉列表中选择的值更新为“02”。

如何根据回调返回的值更新下拉列表选定的值?

这是一个代表:

# -*- coding: utf-8 -*-
import dash.dependencies
import dash_bootstrap_components as dbc
import pandas as pd
import dash_leaflet as dl
from dash import dcc, html, Input, Output

########################################################################################################################
# VARIABLES
df_sites = pd.DataFrame([['01', (48.805, 2.326)], ['02', (43.167, 0.969)], ['03', (48.812, 2.530)]],
                        columns=['id_tech', 'coordonnees'])

circlemarkers = [dl.CircleMarker(
    dl.Tooltip(df_sites.iloc[i]['id_tech']),
    center=pos,
    radius=2,
    id=df_sites.iloc[i]['id_tech'])
    for i, pos in enumerate(df_sites['coordonnees'])]

########################################################################################################################
# APP
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])

app.layout …
Run Code Online (Sandbox Code Playgroud)

python leaflet plotly-dash dash-leaflet

3
推荐指数
1
解决办法
3411
查看次数

为什么 Prevent_initial_call 不停止初始调用?

我有下面的书面代码。我有两个基于chained callbacks. 第一个下拉菜单获取数据集并读取列的名称并更新第二个下拉菜单中的选项。然后,可以将参数绘制在图表上。我的数据框看起来像这样:

df={'col1':[12,15,25,33,26,33,39,17,28,25],
    'col2':[35,33,37,36,36,26,31,21,15,29],
    'col3':['A','A','A','A','B','B','B','B','B','B'],
    'col4':[1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

我想根据 中的类别突出显示图表背景col3。我不明白为什么当我从第一个下拉菜单中选择数据集时,图表上会出现 col3 的背景颜色(在选择参数之前)。我已经使用了Prevent_initial_call = True,但是第二个回调仍然会触发。

import dash
from dash import Dash, html, dcc, Output, Input, State, MATCH, ALL
import plotly.express as px
import pandas as pd
import numpy as np
import dash_bootstrap_components as dbc

app = Dash(__name__)

app.layout = html.Div([
    html.Div(children=[
        html.Button('add Chart', id='add-chart', n_clicks=0)
    ]),
    html.Div(id='container', children=[])
])

@app.callback(
    Output('container', 'children'),
    [Input('add-chart', 'n_clicks'),
    Input({'type': 'remove-btn', 'index': ALL}, 'n_clicks')],
    [State('container', 'children')],
    prevent_initial_call=True
)
def display_graphs(n_clicks, n, …
Run Code Online (Sandbox Code Playgroud)

python callback plotly-dash

3
推荐指数
1
解决办法
5040
查看次数