【数据科学系列】基于Python的Web应用框架Dash-Dash Core Components进阶

Dash Core Components(Dash 核心组件)

  • 下拉列表框
import dash_core_components as dcc

dcc.Dropdown(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value='MTL'
)
import dash_core_components as dcc

dcc.Dropdown(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    multi=True,
    value="MTL"
)
  • 范围滑块
import dash_core_components as dcc

dcc.RangeSlider(
    count=1,
    min=-5,
    max=10,
    step=0.5,
    value=[-3, 7]
)
import dash_core_components as dcc

dcc.RangeSlider(
    marks={i: 'Label {}'.format(i) for i in range(-5, 7)},
    min=-5,
    max=6,
    value=[-3, 4]
)
  • 输入框
import dash_core_components as dcc

dcc.Input(
    placeholder='Enter a value...',
    type='text',
    value=''
)
  • 输入区域;多行文本
import dash_core_components as dcc

dcc.Textarea(
    placeholder='Enter a value...',
    value='This is a TextArea component',
    style={'width': '100%'}
)
  • 复选框
import dash_core_components as dcc

dcc.Checklist(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    values=['MTL', 'SF']
)
import dash_core_components as dcc

dcc.Checklist(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    values=['MTL', 'SF'],
    labelStyle={'display': 'inline-block'}
)
  • 单选框
import dash_core_components as dcc

dcc.RadioItems(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value='MTL'
)
import dash_core_components as dcc

dcc.RadioItems(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value='MTL',
    labelStyle={'display': 'inline-block'}
)

按钮

import dash
import dash_html_components as html
import dash_core_components as dcc

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
    html.Div(dcc.Input(id='input-box', type='text')),
    html.Button('Submit', id='button'),
    html.Div(id='output-container-button',
             children='Enter a value and press submit')
])


@app.callback(
    dash.dependencies.Output('output-container-button', 'children'),
    [dash.dependencies.Input('button', 'n_clicks')],
    [dash.dependencies.State('input-box', 'value')])
def update_output(n_clicks, value):
    return 'The input value was "{}" and the button has been clicked {} times'.format(
        value,
        n_clicks
    )


if __name__ == '__main__':
    app.run_server(debug=True)
  • 日期单一选择器

  • 日期范围选择器

  • Markdown支持

  • 交互式表格

  • 上传组件

  • 切换标签

  • 图片
    Graph组件与开源的plotly.py库共享相同的语法。

import dash_core_components as dcc
import plotly.graph_objs as go

dcc.Graph(
    figure=go.Figure(
        data=[
            go.Bar(
                x=[1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
                   2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012],
                y=[219, 146, 112, 127, 124, 180, 236, 207, 236, 263,
                   350, 430, 474, 526, 488, 537, 500, 439],
                name='Rest of world',
                marker=go.bar.Marker(
                    color='rgb(55, 83, 109)'
                )
            ),
            go.Bar(
                x=[1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
                   2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012],
                y=[16, 13, 10, 11, 28, 37, 43, 55, 56, 88, 105, 156, 270,
                   299, 340, 403, 549, 499],
                name='China',
                marker=go.bar.Marker(
                    color='rgb(26, 118, 255)'
                )
            )
        ],
        layout=go.Layout(
            title='US Export of Plastic Scrap',
            showlegend=True,
            legend=go.layout.Legend(
                x=0,
                y=1.0
            ),
            margin=go.layout.Margin(l=40, r=0, t=40, b=30)
        )
    ),
    style={'height': 300},
    id='my-graph'
)
  • 确认对话框
import dash_core_components as dcc

confirm = dcc.ConfirmDialog(
    id='confirm',
    message='Danger danger! Are you sure you want to continue?'
)

与按钮绑定

import dash_core_components as dcc
import dash_html_components as html

confirm = dcc.ConfirmDialogProvider(
    children=html.Button(
        'Click Me',
    ),
    id='danger-danger',
    message='Danger danger! Are you sure you want to continue?'
)
  • 存储
    存储组件可用于将数据保存在访问者的浏览器中。数据的范围限定为访问页面的用户。

三种类型的存储(storage_type特性):
memory:默认情况下,只要页面未刷新,就保持数据。
local:保留数据,直到手动清除。
session:保留数据,直到浏览器/选项卡关闭。
对于local/ session,数据在存储时被序列化为json。

import dash_core_components as dcc

store = dcc.Store(id='my-store', data={'my-data': 'data'})
  • 注销按钮
    注销按钮可用于执行注销机制。

这是一个带有提交按钮的简单表单,当单击按钮时,它会将表单提交给logout_url道具。

请注意,默认情况下不会在Dash中执行身份验证,您必须自己实现身份验证。

  • 加载组件
    加载组件可用于包装要显示微调器的组件(如果加载时间太长)。它通过检查任何Loading组件的子组件是否具有loading_stateprop设置的位置is_loading来实现此操作。如果为true,它将显示一个内置的CSS微调器。
import dash_core_components as dcc
import dash_html_components as html

loading = dcc.Loading([
    # ...
])
  • 位置组件
    location 组件表示Web浏览器中的位置栏。通过它href,pathname, search和hash属性你可以访问你的应用程序的URL的不同部分。
* splited url below
http://127.0.0.1:8050/page-2?a=test#quiz:

* href = "http://127.0.0.1:8050/page-2?a=test#quiz"
* pathname = "/page-2"
* search = "?a=test"
* hash = "#quiz"
import dash_core_components as dcc

location = dcc.Location(id='url', refresh=False)

更多资料,请访问:https://dash.plot.ly/dash-core-components

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dash-UI 是一个基于 PythonWeb 应用框架,用于构建交互式的数据可视化应用程序。要使用 Dash-UI,你需要先安装相应的包。可以通过以下命令使用 pip 安装 Dash-UI: ``` pip install dash ``` 安装完成后,你可以创建一个 Python 文件,并导入 Dash 相关的库: ```python import dash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output ``` 接下来,你可以通过编写布局和回调函数来构建你的 Dash 应用。布局部分使用 HTML 和 CSS 标签,定义应用的外观和组件排列。回调函数部分用于定义组件之间的交互行为。 以下是一个简单的示例,展示了如何创建一个 Dash 应用: ```python app = dash.Dash(__name__) app.layout = html.Div( children=[ html.H1('欢迎使用 Dash-UI'), dcc.Input(id='input', value='', type='text'), html.Div(id='output') ] ) @app.callback( Output(component_id='output', component_property='children'), [Input(component_id='input', component_property='value')] ) def update_output_div(input_value): return f'你输入了:{input_value}' if __name__ == '__main__': app.run_server(debug=True) ``` 这个简单的应用包含一个输入框和一个输出区域,当你在输入框中输入内容时,输出区域会显示你输入的内容。 以上是 Dash-UI 的基本用法,你可以根据需求进一步探索和扩展。如果有具体的问题或需要更详细的帮助,请提供更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值