Plotly:如何使用plotly-dash在一页上创建“输入文本”并在第二页或选项卡上输出(图形)?

Posted

技术标签:

【中文标题】Plotly:如何使用plotly-dash在一页上创建“输入文本”并在第二页或选项卡上输出(图形)?【英文标题】:Plotly: How to create 'input text' on one page and output (graphs) on second page or tab, by using plotly-dash? 【发布时间】:2021-09-18 03:06:11 【问题描述】:

我正在创建一个应用程序,其中第一页应该只接受“文本输入”,结果(图表)必须显示在第二页或新标签上。我不想在同一页面上输入文本和图表。这意味着,如果我在文本输入栏中将输入写为“美国”,则美国的图形应填充在第二个选项卡上。以下是我到目前为止以下拉格式编写的工作代码。在此代码中,下拉列表和图表位于我不想要的同一页面上。请提出建议。

import pandas as pd
import plotly.express as px
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Output, Input
import numpy as np
import plotly.io as pio
pio.renderers.default='browser'


          
app = dash.Dash(__name__)
app.layout = html.Div([
    html.H1("Economy Analysis"),
    dcc.Dropdown(id='Country_select',
                 options=['label': x, 'value': x
                 for x in df.Country.unique()],
    value = 'USA'
    ),
    dcc.Graph(id ='my-graph', figure = )
    ])

@app.callback(
    Output(component_id = 'my-graph', component_property = 'figure'),
    Input(component_id = 'Country_select', component_property = 'value'))

def interactive_graphing(value_country):
    print(value_country)
    s = 100
    cat_g = ["developing","develop"]
    sample_cat = [cat_g[np.random.randint(0,2)]for i in range(100)]
    df = pd.DataFrame("Country": np.random.choice(["USA", "JPY", "MEX", "IND", "AUS"], s),                   
              "Net": np.random.randint(5, 75, s),
        )
   df["sample_cat"] = sample_cat
   df = df[df.Country==value_country]
   df2 = df.pivot_table(index='Country',columns='sample_cat',values='Net',aggfunc='sum')
   df2.reset_index(inplace=True)

   fig = px.bar(df2, x="Country",
          y=['develop','developing'])

   return fig


if __name__=='__main__':
   app.run_server()

【问题讨论】:

dash.plotly.com/dash-core-components/tabs 这是你要找的吗? 没有。我的第一个网页应该只包含“文本输入栏”,一旦我选择了值,结果应该在新浏览器中打开。 刚看到这些cmets。据我所知,Dash 不会在新的浏览器选项卡或页面中打开任何链接。您可能需要为此探索 Flask。 【参考方案1】:

您可以在布局中使用dcc.Tabsdcc.Tab 容器,并将输入/图形放在单独的选项卡中。 Dash 引导组件选项卡也适用于此。 id 仍将作为回调的输入/输出。

示例布局:

app.layout = html.Div([
    html.H1("Economy Analysis"),
    
    dcc.Tabs([
        dcc.Tab(
            label='Dropdown',
            children=[
                dcc.Dropdown(id='Country_select',
                             options=['label': x, 'value': x
                             for x in df.Country.unique()],
                             value = 'USA')
            ]
        ),
        dcc.Tab(
            label='Graph',
            children=[
                dcc.Graph(id ='my-graph')
            ]
        )
    ])
])

【讨论】:

以上是关于Plotly:如何使用plotly-dash在一页上创建“输入文本”并在第二页或选项卡上输出(图形)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在绘图条形图上左对齐文本(包含示例图像)[Plotly-Dash]

使用 plotly-dash 上传文件

Plotly-dash 图不显示值

Plotly-Dash 实时图表:回调失败

Plotly-Dash:- 文件上传后在 plotly dash 中进行多列过滤

Plotly-dash 用户可以编辑和保存对仪表板的更改吗?