Python 交互式数据可视化框架:Dash(上)
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。您将使用这些软件包的特定版本,以确保与本教程中使用的环境具有相同的环境。在本节中,您将了解布局,在下一节中,将学习如何使仪表板具有交互性
Plotly还为Dash提供了称为Dash Enterprise的商业伙伴付费服务。这项付费服务为商业公司提供了以下支持服务,例如在Dash应用程序上托管、部署和处理身份验证。但是这些功能不在Dash的开源生态系统中。
Dash将帮助您快速构建dashboard仪表板。如果您习惯于使用Python分析数据或建立数据可视化效果,那么Dash将是您工具箱中的有用补充。以下是一些您可以使用Dash制作的示例:
- 可实时分析交易头寸的dashboard仪表盘
https://dash-gallery.plotly.host/dash-web-trader/
- 数百万个 Uber 行程的可视化
https://dash-gallery.plotly.host/dash-uber-rides-demo/
- 一个交互式的财务报告
https://dash-gallery.plotly.host/dash-financial-report/
这只是很简单的几个样例。如果您想查看其他有趣的用例,请查看Dash App Gallery(https://dash-gallery.plotly.host/Portal/
)。
Python中的Dash入门
在本教程中,您将学习使用Dash构建仪表板的详细过程。如果遵循这些示例,那么您将从本地计算机上的准系统仪表板转到部署在Heroku上的样式化仪表板。
要构建仪表板,您将使用2015年至2018年期间美国鳄梨销售和价格数据集(https://www.kaggle.com/neuromusic/avocado-prices
)。该数据集由Justin Kiggins使用Hass Avocado Board(https://www.hassavocadoboard.com/retail/volume-and-price-data
)提供的数据整理而来。
如何设置本地环境
要开发应用,您需要一个新目录来存储代码和数据,以及一个干净的Python 3 虚拟环境。要创建这个环境,请按照以下说明进行操作,选择与您的操作系统匹配的版本。
如果您使用的是Windows系统,请打开命令提示符并执行以下命令:
c:\> mkdir avocado_analytics && cd avocado_analytics
c:\> c:\path\to\python\launcher\python -m venv venv
c:\> venv\Scripts\activate.bat
第一个命令为您的项目创建一个目录,并将当前位置移动到该目录。第二条命令在该位置创建一个虚拟环境。最后一条命令激活虚拟环境。确保将第二个命令中的路径替换为Python 3启动器的路径。
如果您使用的是macOS或Linux系统,请从终端执行以下步骤:
$ mkdir avocado_analytics && cd avocado_analytics
$ python3 -m venv venv
$ source venv/bin/activate
前两个命令执行以下操作:
1、创建一个名为avocado_analytics
的目录
2、将您当前的位置移动到avocado_analytics
目录
3、在该目录中创建一个干净的虚拟环境venv
最后一条命令激活您刚刚创建的虚拟环境。
接下来,您需要安装所需的库。您可以在虚拟环境中使用pip来实现。如下安装库:
(venv) $ python -m pip install dash==1.13.3 pandas==1.0.5
此命令将在您的虚拟环境中安装Dash和pandas。您将使用这些软件包的特定版本,以确保与本教程中使用的环境具有相同的环境。除了Dash之外,pandas还可以帮助您读取和处理将在应用程序中使用的数据。
最后,您需要一些数据以将其输入到仪表板中。将数据另存为avocado.csv
在项目的根目录中。到目前为止,您应该已经有了一个虚拟环境,其中包含必需的库以及项目根文件夹中的数据。您项目的结构应如下所示:
avocado_analytics/
|
├── venv/
|
└── avocado.csv
接下来,您将构建第一个Dash应用程序。
如何构建Dash应用程序
分两个步骤考虑构建Dash应用程序的过程:
- 根据应用的布局来定义应用的外观。
- 使用回调函数来确定应用程序的哪些部分是交互式的,以及它们如何响应。
在本节中,您将了解布局,在下一节中,将学习如何使仪表板具有交互性。首先,设置初始化应用程序所需的所有内容,然后定义应用程序的布局。
初始化您的Dash应用程序
在项目的根目录中创建一个名为app.py
的空文件,然后在本节中查看app.py
的代码。
这是app.py
的前几行:
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
data = pd.read_csv("avocado.csv")
data = data.query("type == 'conventional' and region == 'Albany'")
data["Date"] = pd.to_datetime(data["Date"], format="%Y-%m-%d")
data.sort_values("Date", inplace=True)
app = dash.Dash(__name__)
在第1至4行中,导入所需的库:dash
,dash_core_components
,dash_html_components
和pandas
。每个库都为您的应用程序提供了一个构建模块:
dash
可帮助您初始化应用程序。dash_core_components
允许您创建交互式组件,例如图形,下拉列表或日期范围。dash_html_components
使您可以访问HTML标记。pandas
可以帮助您阅读和整理数据。
在第6到9行中,您将读取数据并对其进行预处理以在仪表板中使用。之所以要过滤掉某些数据,是因为当前版本的仪表板不是交互式的,否则绘制的值就没有意义了。
在第11行上,创建Dash类的实例。如果您以前使用过Flask,则初始化Dash类可能看起来很熟悉。在Flask中,通常使用Flask(__ name__)
初始化WSGI应用程序。同样,对于Dash应用程序,您可以使用Dash(__ name__)
。
定义Dash应用程序的布局
接下来,您将定义应用程序的layout
属性。此属性决定了您应用的外观。在这种情况下,您将使用标题下方带有说明的标题和两个图表。定义方式如下:
app.layout = html.Div(
children=[
html.H1(children="Avocado Analytics",),
html.P(
children="Analyze the behavior of avocado prices"
" and the number of avocados sold in the US"
" between 2015 and 2018",
),
dcc.Graph(
figure={
"data": [
{
"x": data["Date"],
"y": data["AveragePrice"],
"type": "lines",
},
],
"layout": {"title": "Average Price of Avocados"},
},
),
dcc.Graph(
figure={
"data": [
{
"x": data["Date"],
"y": data["Total Volume"],
"type": "lines",
},
],
"layout": {"title": "Avocados Sold"},
},
),
]
)
这段代码定义了app
对象的layout
属性。此属性使用由Dash组件组成的树结构确定应用程序的外观。
Dash组件预先包装在Python库中。在安装Dash时,其中一些会附带Dash。其余的您必须单独安装。几乎每个应用程序中都会看到两组组件:
1、Dash HTML Components
(https://dash.plotly.com/dash-html-components
)为HTML元素提供Python包装器。例如,您可以使用此库来创建元素,例如段落,标题或列表。
2、Dash Core Components
(https://dash.plotly.com/dash-core-components
)组件为您提供了用于创建交互式用户界面的Python模块。您可以使用它来创建交互式元素,例如图形,滑块或下拉菜单。
在第13至20行,您可以在实践中看到Dash HTML组件。首先定义父组件html.Div
。然后,再添加两个元素,即标题(html.H1
)和段落(html.P
)作为其子元素。
这些组件等效于div
,h1
和p
HTML标签。您可以使用组件的参数来修改标签的属性或内容。例如,要指定div
标记内的内容,请使用html.Div
中的children
参数。
组件中还有其他参数,例如style
,className
或id
,它们引用HTML标签的属性。在下一部分中,您将看到如何使用其中的一些属性来设置仪表板的样式。
第13至20行所示的部分布局将转换为以下HTML代码:
<div>
<h1>Avocado Analytics</h1>
<p>
Analyze the behavior of avocado prices and the number
of avocados sold in the US between 2015 and 2018
</p>
<!-- Rest of the app -->
</div>
当您在浏览器中打开应用程序时,将呈现此HTML代码。它遵循与Python代码相同的结构,带有div
标记,其中包含h1
和p
元素。
在布局代码段的第21至24行中,您实际上可以从Dash 核心组件中看到图形组件。app.layout
中有两个dcc.Graph
组件。第一个绘制了研究期间鳄梨的平均价格,第二个绘制了同期美国鳄梨的销售数量。
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
更多推荐
所有评论(0)