1 項(xiàng)目說明
??本項(xiàng)目是基于 Dash 開發(fā)的一個(gè)演示項(xiàng)目,對(duì)小米集團(tuán) 2018 年的財(cái)報(bào),進(jìn)行了簡(jiǎn)單的解讀,其界面如下:

??共包括 5 部分內(nèi)容:
- 總覽:小米 2018 年整體狀況
- 智能手機(jī):智能手機(jī)業(yè)務(wù)分析
- IoT 與生活消費(fèi)產(chǎn)品:IoT 與生活消費(fèi)產(chǎn)品業(yè)務(wù)分析
- 互聯(lián)網(wǎng)服務(wù):互聯(lián)網(wǎng)服務(wù)業(yè)務(wù)分析
- 其它:一些補(bǔ)充說明
??項(xiàng)目數(shù)據(jù)主要來源于:
- 香港交易所 HKEX 數(shù)據(jù)
- 小米集團(tuán) 2018 年財(cái)報(bào)
- IDC 調(diào)研報(bào)告數(shù)據(jù)
??通過此項(xiàng)目,可以快速上手 Dash 和 Plotly,并獲得一個(gè)在線的數(shù)據(jù)報(bào)告。不過此次主要是為了熟悉 Dash 框架,分析的質(zhì)量很一般,這里也不對(duì)項(xiàng)目?jī)?nèi)容進(jìn)行展示了,想進(jìn)一步了解可以從 GitLab 獲取本項(xiàng)目。
??Dash 是一個(gè)用于構(gòu)建數(shù)據(jù)可視化 web 應(yīng)用的 Python 框架,基于 Flask、Plotly.py 和 React.js。其使用簡(jiǎn)單,可以方便快捷地搭建一個(gè)數(shù)據(jù)可視化應(yīng)用。這里不對(duì)其使用做過多介紹,可以參考官方教程。
2 使用項(xiàng)目
??可以直接 clone 項(xiàng)目的代碼,已使用本項(xiàng)目,具體來說,需要 4 步:
- 首先從 GitLab 克隆本項(xiàng)目:
git clone https://gitlab.com/gaiusyao/idash.git
- 接著構(gòu)建虛擬環(huán)境(非必需),并安裝依賴:
# 使用 conda 構(gòu)建虛擬環(huán)境
conda create -n idash python=3.6
# 啟動(dòng)虛擬環(huán)境
activate idash
# 安裝依賴
pip install -r requirements.txt
- 然后啟動(dòng)應(yīng)用:
# 進(jìn)入項(xiàng)目文件夾
cd dash-xiaomi-2018
# 啟動(dòng)應(yīng)用
python app.py
- 最后在瀏覽器輸入
http://127.0.0.1:8050/dash-xiaomi-2018以訪問應(yīng)用。
3 項(xiàng)目結(jié)構(gòu)
??Dash 項(xiàng)目的基本結(jié)構(gòu)如下:
Dash_App/
|-- assets/
|-- app.css
|-- app.py
|-- .gitignore
|-- Procfile
|-- requirements.txt
|-- runtime.txt
??具體來說,各部分的功能如下:
-
Dash_App/項(xiàng)目文件夾-
assets外部文件,包括 CSS、Js、img 文件-
app.cssCSS 文件
-
-
-
app.py應(yīng)用程序的啟動(dòng)文件 -
.gitignore確定在git中忽略哪些文件和文件夾 -
Procfile聲明應(yīng)用程序容器運(yùn)行的命令 -
requirements.txt描述應(yīng)用程序的 python 依賴項(xiàng) -
runtime.txt指定運(yùn)行的 python 版本
??而具體到本項(xiàng)目,由于以后會(huì)在同一個(gè)虛擬環(huán)境上有多個(gè) Dash 項(xiàng)目,因此筆者將本項(xiàng)目文件放在 iDash 文件夾下的 dash-xiaomi-2018,同時(shí)將 requirements.txt 直接放在 iDash 文件夾下。另外,在項(xiàng)目文件夾(dash-xiaomi-2018)下,設(shè)置了 data 和 components 文件夾,分別用于存放數(shù)據(jù)文件和應(yīng)用組件的 python 文件。
4 One More Thing
??在此次實(shí)戰(zhàn)中,發(fā)現(xiàn) plotly.py 的使用較為繁瑣,需要編寫很多代碼以進(jìn)行圖形設(shè)置。為了解決這個(gè)問題,需要對(duì) plotly.py 進(jìn)行簡(jiǎn)潔一致的高級(jí)封裝,類似 seaborn 之于 matplotlib。筆者經(jīng)過一番查找,發(fā)現(xiàn) plotly express 提供了現(xiàn)成的解決方案,在下個(gè) Dash 項(xiàng)目中,筆者將會(huì)對(duì)其進(jìn)行試用。