一、介绍
Dash是一个用于构建Web应用程序的高效Python框架。
Dash写在Flask,Plotly.js和React.js之上,非常适合在纯Python中,使用高度自定义的用户界面,构建数据可视化应用程序。它特别适合使用Python进行数据分析的人。
通过几个简单的模式,Dash抽象出构建基于Web的交互式应用程序所需的所有技术和协议。
Dash应用程序在Web浏览器中呈现,可以将应用程序部署到服务器,然后通过URL进行共享。
由于Dash应用程序是在Web浏览器中进行查看,因此Dash本质上是跨平台和移动端的。
Dash是一个开源库,在许可的MIT下发布,Plotly开发Dash,并提供了一个在企业环境中轻松部署Dash应用程序的平台。
二、应用场景
(一) 纯Python创建交互式Web应用程序
Dash是用于创建Web应用程序的用户界面库,使用Python进行数据分析、数据探索、可视化、建模、仪器控制和撰写报告的人推荐使用。
使用Dash基于分析数据构建GUI非常简单,下图是一个43行代码的Dash App示例,它将Dropdown与D3.js Plotly Graph结合起来使用。当用户在下拉列表中选择一个值时,应用程序代码会将Google财经中的数据动态导出到Pandas DataFrame中,并进行可视化(源代码)。
Dash应用程序的代码,非常灵活简单,可以很方便地构建包含许多交互元素的复杂应用程序。下图是一个包含5个输入,3个输出和交叉滤波的示例,只有160行代码,所有代码都是Python写的(源代码)。
应用程序的每个元素都可以自定义:大小,位置,颜色和字体等。Dash应用程序是在Web中构建和发布的,因此CSS的全部功能都可用。下图是一个高度定制的交互式Dash报告应用程序的示例,其中包含Goldman Sachs报告的品牌和风格(源代码)。
虽然在Web浏览器中查看Dash应用程序,但不必编写任何Javascript或HTML。Dash为一组丰富的基于Web的交互式组件提供了Python接口。
import dash_core_components as dcc
dcc.Slider(value=4, min=-10, max=20, step=0.5,
marks={-5: '-5 Degrees', 0: '0', 10: '10 Degrees'})
Dash提供了一个简单的回调装饰器,用于将自定义数据分析代码绑定到Dash用户界面,实现高级交互,如下简单示例。
@dash_app.callback(Output('graph-id', 'figure'), [Input('slider-id', 'value')])
def your_data_analysis_function(new_slider_value):
new_figure = your_compute_figure_function(new_slider_value)
return new_figure
当元素的值发生变化时,比如选择下拉菜单或拖动滑块,Da