Python 的 Dash 入门


Dash 是一个成功的 Python 框架,已成为创建数据可视化界面的流行选择。它非常适合使用纯 Python 构建具有高度交互式用户界面的分析型 Web 应用程序。本文将对 Dash 进行全面介绍,并提供一些有用的示例来帮助您入门。

什么是 Dash?

Dash 是 Plotly 创建的一个 Python 框架,允许您创建分析型在线应用程序,无需了解 JavaScript、CSS 或 HTML。Dash 应用程序有两个主要组成部分:布局,它指定应用程序的外观;交互,它指定应用程序的功能。

Dash 入门

可以使用 Python 的包安装程序 Pip 来安装 Dash:

pip install dash

安装完成后,您可以在 Python 脚本中导入 Dash 包:

import dash
import dash_core_components as dcc
import dash_html_components as html

构建 Dash 应用程序

现在让我们看看如何创建一个 Dash 应用程序。

示例 1:一个基本的 Dash 应用程序

此处提供了一个非常简单的 Dash 应用程序的代码:

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

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': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
            {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': 'Montreal'},
         ],
         'layout': {
            'title': 'Dash Data Visualization'
         }
      }
   )
])

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

该程序显示一个标题、一段文本和一个简单的条形图。

示例 2:使用 Dash 回调实现交互性

Dash 使用回调使应用程序具有交互性。回调将各个部分连接起来,以便随着输入的变化,输出也会变化。这是一个示例:

import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div([
   dcc.Input(id='my-input', value='initial value', type='text'),
   html.Div(id='my-output')
])

@app.callback(
   Output(component_id='my-output', component_property='children'),
   [Input(component_id='my-input', component_property='value')]
)
def update_output_div(input_value):
   return 'You've entered "{}"'.format(input_value)

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

在此示例中,如果“my-input”组件发生变化,则回调会更新“my-output”组件。

示例 3:多个输入和输出

Dash 支持具有多个输入和输出的回调:

import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div([
   dcc.Input(id='input-1', type='text'),
   dcc.Input(id='input-2', type='text'),
   html.Div(id='output')
])

@app.callback(
   Output(component_id='output', component_property='children'),
   [Input(component_id='input-1', component_property='value'),
   Input(component_id='input-2', component_property='value')]
)
def update_output_div(input1, input2):
   return 'You've entered "{}" and "{}"'.format(input1, input2)

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

在此示例中,两个输入组件连接到回调函数 update_output_div。输出组件会更新以反映任一输入值的任何变化。

示例 4:使用 Dash Core Components

Dash 提供的组件库(包括 dash_core_components 和 dash_html_components)提供了更高级别的组件,例如下拉菜单、图表、Markdown 块等等。这是一个使用下拉菜单组件的示例:

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div([
   dcc.Dropdown(
      id='dropdown',
      options=[
         {'label': 'Option 1', 'value': '1'},
         {'label': 'Option 2', 'value': '2'},
         {'label': 'Option 3', 'value': '3'}
      ],
      value='1'
   ),
   html.Div(id='display-selected-values')
])

@app.callback(
   dash.dependencies.Output('display-selected-values', 'children'),
   [dash.dependencies.Input('dropdown', 'value')])
def set_display_children(selected_value):
   return 'You've selected "{}"'.format(selected_value)

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

在此示例中,输出通过回调函数更新,以显示从下拉菜单中选择的项目。

结论

Python 框架 Dash 提供了一个有效的工具集,用于构建基于 Web 的数据可视化应用程序。其多功能性允许用户仅使用 Python 代码构建复杂且交互式的数据面板,使其成为数据科学领域中非常受欢迎的工具。

本文介绍了 Dash 及其功能,包括如何安装它以及如何将其与 Python 编程一起使用。此外,我们还查看了四个示例,每个示例都展示了如何以不同的方式开发 Dash 应用程序,包括如何设计一个简单的程序、添加带有回调的交互、使用多个输入和输出以及使用 Dash 的核心组件。

但是,此处提供的示例只是 Dash 潜力的冰山一角。为了进一步了解 Dash 的潜力,我们鼓励您进行更多研究并尝试不同的组件和回调结构。对于复杂的应用程序,其官方文档是一个极好的资源,提供了大量信息。

更新于:2023年7月17日

浏览量 183 次

开启你的职业生涯

完成课程获得认证

开始学习
广告