标签: plotly-dash

在 Dash 中输入多个可移动值

有没有这样的破折号组件:

在此输入图像描述

基本上是一个文本输入,但带有可移动项目的列表,通过按 Enter 键添加。

我知道下拉菜单可以像这样工作,但我事先没有指定的选项列表。

python plotly plotly-dash

5
推荐指数
1
解决办法
1525
查看次数

Dash 数据表下拉过滤器

Dash DataTable 组件在列标题下提供了一个自由文本过滤器。

Dash 自由文本过滤器

如何用包含所有可供选择的唯一值的下拉过滤器替换此过滤器?

Excel 中现成的东西:

Excel 下拉过滤器

或者在DataTables JavaScript 组件中进行一些简单的修改

数据表下拉过滤器

我知道我可以在通过回调与 DataTable 交互的 DataTable 之外使用下拉过滤器,但我希望下拉过滤器成为 DataTable 列标题的一部分。从这个意义上说,我不想使用以下解决方案:在破折号中从下拉列表中过滤行后显示数据表

python plotly-dash

5
推荐指数
1
解决办法
9600
查看次数

Plotly Dash 数据表中的可点击超链接

有几个类似的问题我将在本文中引用,但我有一个DataTable带有列的破折号,我想将其制作为可单击的超链接。该表基本上如下所示:

Date                        Ticket ID           Work Order           Link (s)
2018-08-30 22:52:25         1444008             119846184            google.com/woNum=119846184
2021-09-29 13:33:49         1724734             122445397, 122441551 google.com/woNum=122445397, google.com/woNum=122441551
Run Code Online (Sandbox Code Playgroud)

如果没有超链接,我将通过 Pandas 数据框以及 Dash 的数据和列引用创建表,DataTable如下所示:

# works fine
searchFrame = searchFrame.drop(columns=['ContentNoStop'])
columns = [{'name': col, 'id': col} for col in searchFrame.columns]
Run Code Online (Sandbox Code Playgroud)

链接是通过以下方式创建的:

woLink = r'http://corp.com/uniqueid='

df['WO Link'] = df['Work Order'].str.replace('(\d+)', rf'{woLink}\1')

crLink = r'http://corp.com/uniqueid='
        
df['Ticket Link'] = crLink + df['Ticket ID'].astype(str)
Run Code Online (Sandbox Code Playgroud)

现在,根据Plotly 论坛的这个问题,我进行了编辑以适合我的:

columns = [
        {'name': col, 'id': col} 
for col in searchFrame.loc[
                :, …
Run Code Online (Sandbox Code Playgroud)

python plotly-dash

5
推荐指数
1
解决办法
8574
查看次数

如何解决 Dash Bootstrap No_Gutter 类型错误

当我运行此代码时,我收到一条错误消息,显示“错误:组件dash_bootstrap_components.Row(版本 1.0.2)收到意外的关键字参数:no_gutters 允许的参数:align、children、className、class_name、id、justify、key、loading_state、style”

我相信这是因为我使用的 dash bootstrap 版本。如何修改我的代码以使其正常工作?

app.layout = dbc.Container([

    dbc.Row(
        dbc.Col(html.H1("My Dashboard",
                        className='text-center'),
                width=12)
    ),

    dbc.Row([

        dbc.Col([
            dcc.Dropdown(id='my-dpdn', multi=False, value='A',
                         options=[{'label':x, 'value':x}
                                  for x in sorted(df['Value'].unique())],
                         ),
            dcc.Graph(id='line-fig', figure={})
        ],# width={'size':5, 'offset':1, 'order':1},
           xs=12, sm=12, md=12, lg=5, xl=5
        ),

        dbc.Col([
            dcc.Dropdown(id='my-dpdn2', multi=True, value=['B','C'],
                         options=[{'label':x, 'value':x}
                                  for x in sorted(df['Value'].unique())],
                         ),
            dcc.Graph(id='line-fig2', figure={})
        ], #width={'size':5, 'offset':0, 'order':2},
           xs=12, sm=12, md=12, lg=5, xl=5
        ),

    ], no_gutters=True, justify='start')


], fluid=True)


Run Code Online (Sandbox Code Playgroud)

python plotly-dash

5
推荐指数
2
解决办法
4375
查看次数

单击按钮即可触发仪表板

我正在开发一个破折号应用程序,我尝试在其中集成ExplainerDashboard

如果我这样做:

app.config.external_stylesheets = [dbc.themes.BOOTSTRAP]

app.layout = html.Div([
    html.Button('Submit', id='submit', n_clicks=0),
    html.Div(id='container-button-basic', children='')
])

X_train, y_train, X_test, y_test = titanic_survive()
model = LogisticRegression().fit(X_train, y_train)
explainer = ClassifierExplainer(model, X_test, y_test)
db = ExplainerDashboard(explainer, shap_interaction=False)
db.explainer_layout.register_callbacks(app)     

@app.callback(
    Output('container-button-basic', 'children'),
    Input('submit', 'n_clicks'),
)
def update_output(n_clicks):

    if n_clicks == 1:
        return db.explainer_layout.layout()
Run Code Online (Sandbox Code Playgroud)

单击按钮时会触发仪表板,但是,它是在我单击按钮之前以及破折号开始时计算的。如果我更改它并将计算放入这样的回调中,我会得到仪表板,但看起来注册回调不起作用并且所有绘图都是空的

app.config.external_stylesheets = [dbc.themes.BOOTSTRAP]

app.layout = html.Div([
    html.Button('Submit', id='submit', n_clicks=0),
    html.Div(id='container-button-basic', children='')
])

X_train, y_train, X_test, y_test = titanic_survive()
model = LogisticRegression().fit(X_train, y_train)
explainer = ClassifierExplainer(model, X_test, y_test)

@app.callback(
    Output('container-button-basic', …
Run Code Online (Sandbox Code Playgroud)

python plotly-dash

5
推荐指数
1
解决办法
3453
查看次数

使用 Gunicorn 在 GCP 上部署时,Dash 应用程序无法找到页面文件夹

我正在尝试部署我的dash应用程序,该应用程序使用dash_extensions、Dash_proxy,并且在使用gunicorn运行的GCP云上的页面文件夹中具有多个页面,但该应用程序找不到页面文件夹。当我使用开发服务器时它工作得很好,但在生产服务器中由于找不到文件夹路径而中断。

该应用程序(以下代码位于app.py文件内):

app = DashProxy(use_pages=True, pages_folder=pages_folder, external_stylesheets=[dbc.themes.SIMPLEX])
Run Code Online (Sandbox Code Playgroud)

文件app.pypages文件夹在同一目录下

我尝试过以下方法来获取文件夹路径:

pages_folder="pages"
Run Code Online (Sandbox Code Playgroud)
pages_folder=os.path.join(os.path.dirname(__file__), "pages")
Run Code Online (Sandbox Code Playgroud)
for p in Path('.').rglob('*'):
    if str(p).endswith('pages'):
        pages_folder = str(p)
        break
Run Code Online (Sandbox Code Playgroud)

当通过 docker 使用gunicorn 在 gcp 上部署时,以上三个都不起作用:

Dockerfile 命令:

CMD ["gunicorn"  , "-b", "0.0.0.0:8000", "app:server"]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,如果我通过 docker 使用开发服务器,如下代码所示,它可以工作:

CMD python app.py
Run Code Online (Sandbox Code Playgroud)

有谁知道如何让它与gunicorn 一起工作吗?

谢谢您的帮助!

-雷克森

python gunicorn dockerfile plotly-dash google-cloud-run

5
推荐指数
1
解决办法
897
查看次数

当使用 Plotly 移动色阶范围的滑块时,如何实现更快的渲染?

以下代码用于使用滑块更改 Plotly 热图色标的 \xe2\x80\x9cmin\xe2\x80\x9d 。

\n

但它非常慢:拖动滑块时我们的移动速度为 1 fps。

\n

像用“heatmapgl”替换“heatmap”这样的解决方案并不能真正解决问题(它可能会提高到 2 fps)。

\n

如何使用滑块更灵敏/更快地更改色阶?

\n

对于许多应用程序来说,能够“实时”(超过 10 fps)看到色标变化的结果至关重要,并且可以使用 Matplotlib 等来做到这一点。

\n

如何在 Plotly JS 中获得相同的行为?

\n

\r\n
\r\n
var z = Array.from({length: 500}, () => Array.from({length: 1000}, () => Math.floor(Math.random() * 500)));  \nvar steps = [], i;\nfor (i = 0; i < 500; i++)\n    steps.push({label: i, method: \'restyle\', args: [\'zmin\', i]});\nPlotly.newPlot(\'myDiv\',  [{z: z, colorscale: \'Jet\', type: \'heatmap\'}], {sliders: [{steps: steps}]});
Run Code Online (Sandbox Code Playgroud)\r\n
<script src="https://cdn.plot.ly/plotly-2.16.2.min.js"></script>\n<div id="myDiv"></div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

javascript visualization plotly plotly-dash plotly.js

5
推荐指数
1
解决办法
759
查看次数

破折号多页“存储组件”值

我正在尝试实现一个多页面 Dash Web 应用程序,但在跨页面来回切换时,我很难“存储”组件中的更改。也就是说,每次移动到新页面时,布局都会刷新。

下面有一个(最小?)用于重现性目的的代码示例,其中第 1 页有一个 html 表格,第一行允许用户输入和添加按钮,然后也可以删除插入的行。第2页只是一个用于来回切换的占位符。

我想一种策略可能是使用不同的dcc.Stores 并记录发生的情况,并在切换时从中填充页面。但我希望有更好的策略:)

索引.py

import dash
from dash import html, dcc
import dash_bootstrap_components as dbc

# Dash app
app = dash.Dash(
    __name__,
    external_stylesheets=[
        dbc.themes.FLATLY,
        dbc.icons.BOOTSTRAP,
    ],
    use_pages=True,
)

sidebar = dbc.Col(
    id="sidebar",
    children=[
        dbc.Nav(
            id="sidebar-nav",
            children=[
                dbc.NavLink(children="page1", id="page1", href="/page1", active="exact"),
                dbc.NavLink(children="page2", id="page2", href="/page2", active="exact")
            ],
        ),
    ],
)

main_content = dbc.Col(
    id="main-content",
    className="main-content-expanded",
    children=dash.page_container,
)

page = dbc.Row(
    id="page",
    children=[
        sidebar,
        main_content,
    ],
)

url = dcc.Location(id="url", refresh=False)

# App …
Run Code Online (Sandbox Code Playgroud)

python plotly-dash

5
推荐指数
1
解决办法
758
查看次数

无法为 pycrypto 构建轮子,这是安装基于 pyproject.toml 的项目所必需的 - 错误

我在部署到 Heroku 时遇到错误。错误:无法为 pycrypto 构建轮子,这是安装基于 pyproject.toml 的项目所必需的。但是,我的项目没有指定使用 pycrypto。是什么导致了这个问题?我的requirements.txt看起来像:

\n
    \n
  • 蟒蛇==3.10.9
  • \n
  • firebase_管理员
  • \n
  • 火碱基
  • \n
  • 火碱4
  • \n
  • 短跑
  • \n
  • 破折号验证
  • \n
  • dash_bootstrap_components
  • \n
  • 破折号数据
  • \n
  • 熊猫
  • \n
  • 阴谋地
  • \n
\n
Heroku CLI output\n Building wheel for pycrypto (setup.py): started\nremote:          Building wheel for pycrypto (setup.py): finished with status 'error'\nremote:          error: subprocess-exited-with-error\nremote:\nremote:          \xc3\x97 python setup.py bdist_wheel did not run successfully.\nremote:          \xe2\x94\x82 exit code: 1\nremote:          \xe2\x95\xb0\xe2\x94\x80> [71 lines of output]\nremote:              checking for gcc... gcc\nremote:              checking whether the C compiler works... yes\nremote:              checking …
Run Code Online (Sandbox Code Playgroud)

python heroku plotly-dash

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

如何将Flask登录名与Dash应用程序合并?

我必须设计一个提供Flask服务和Dash服务的Web应用程序。例如,我想在Flask中创建一个结合Dash应用程序的登录名。问题是我无法将烧瓶登录名与破折号绑定。我需要一个类似“ @require_login”的方法来过滤对Dash服务的访问。代码如下:

app_flask = Flask(__name__)

app_flask.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////login.db'
app_flask.config['SECRET_KEY'] = 'thisissecret'

db = SQLAlchemy(app_flask)
login_manager = LoginManager()
login_manager.init_app(app_flask)

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(30), unique=True)

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

@app_flask.route('/')
def index():
    user = User.query.filter_by(username='admin').first()
    login_user(user)
    return 'You are now logged in!'

@app_flask.route('/logout')
@login_required
def logout():
    logout_user()
    return 'You are now logged out!'

@app_flask.route('/home')
@login_required
def home():
    return 'The current FLASK user is ' + current_user.username

# TODO how to add login_required for dash? 
app_dash …
Run Code Online (Sandbox Code Playgroud)

python web-applications flask plotly-dash

4
推荐指数
2
解决办法
923
查看次数