Dash 是一个基于 Python 的开源框架,由 Plotly 开发,用于构建数据驱动的交互式 Web 应用程序。它结合了 Flask、Plotly 和 React.js 的强大功能,简化了数据可视化应用的开发过程。Dash 非常适合需要将数据科学和数据分析结果展示给非技术用户的情况。
Dash 的核心组件
1. **Dash 核心库**:
- 提供了构建 Dash 应用程序的基础结构。
- 主要模块包括 `dash.Dash` 类,用于创建 Dash 应用。
2. **Dash HTML 组件(dash-html-components)**:
- 包含了所有标准的 HTML 标签(如 `div`、`h1`、`p` 等),用于构建应用的布局。
3. **Dash Core 组件(dash-core-components)**:
- 提供了更复杂的组件,如图表、下拉菜单、滑块等,便于创建交互式元素。
4. **Plotly 图表库**:
- 用于生成高质量的交互式图表和图形,支持多种类型的图表,包括折线图、散点图、条形图等。
创建一个简单的 Dash 应用
以下是一个使用 Dash 构建简单数据可视化应用的示例。
1. 安装 Dash
在开始之前,需要安装 Dash 和相关组件。可以使用以下命令进行安装:
```bash
pip install dash
pip install dash-html-components
pip install dash-core-components
pip install plotly
```
2. 创建 Dash 应用
创建一个名为 `app.py` 的 Python 文件,包含以下内容:
```python
import dash
from dash import dcc, html
import plotly.express as px
import pandas as pd
# 创建 Dash 应用
app = dash.Dash(__name__)
# 示例数据
df = pd.DataFrame({
"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "NYC", "NYC", "NYC"]
})
# 创建图表
fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")
# 定义应用的布局
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=fig
)
])
# 运行应用
if __name__ == '__main__':
app.run_server(debug=True)
```
3. 运行应用
在终端中运行以下命令,启动 Dash 应用:
```bash
python app.py
```
然后在浏览器中访问 `http://127.0.0.1:8050/`,即可看到创建的 Dash 应用。
Dash 应用结构
1. **应用实例**:
- 使用 `dash.Dash` 类创建应用实例,是应用的核心对象。
2. **布局(Layout)**:
- 定义应用的用户界面,包含 HTML 元素和 Dash 核心组件。
- 通过 `app.layout` 属性设置应用布局。
3. **回调函数(Callbacks)**:
- 用于定义交互逻辑,通过装饰器将输入组件和输出组件绑定在一起。
- 回调函数在用户与组件交互时触发,更新界面内容。
复杂应用示例
1. 添加交互功能
创建一个更复杂的示例,包含用户输入和图表动态更新:
```python
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd
# 创建 Dash 应用
app = dash.Dash(__name__)
# 示例数据
df = pd.DataFrame({
"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "NYC", "NYC", "NYC"]
})
# 定义应用的布局
app.layout = html.Div(children=[
html.H1(children='Dynamic Dash Application'),
html.Div(children='''
Select a city to update the chart.
'''),
dcc.Dropdown(
id='city-dropdown',
options=[
{'label': 'San Francisco', 'value': 'SF'},
{'label': 'New York City', 'value': 'NYC'}
],
value='SF'
),
dcc.Graph(
id='bar-chart'
)
])
# 回调函数更新图表
@app.callback(
Output('bar-chart', 'figure'),
Input('city-dropdown', 'value')
)
def update_chart(selected_city):
filtered_df = df[df['City'] == selected_city]
fig = px.bar(filtered_df, x='Fruit', y='Amount', color='Fruit', barmode='group')
return fig
# 运行应用
if __name__ == '__main__':
app.run_server(debug=True)
```
Dash 提供了强大的功能和灵活性,使得数据科学家和分析师能够轻松构建和部署交互式的数据可视化应用。通过结合 Dash 核心组件、Plotly 图表库和 Flask 的后端能力,可以快速创建复杂且美观的 Web 应用。
标签:__,dash,框架,app,Dash,开源,html,应用 From: https://blog.csdn.net/weixin_61468920/article/details/139835382