- 用於查詢2021年台灣各地區公投結果、產生分層設色圖、以及與村里收入進行複合分析
master
分支為deadline前繳交,與當前after
分支相比主要多了更多複合分析項目以及更改上傳圖床
- WSL 1 : Ubuntu 18.04 LTS
- 建議將apt sources.list 更換為
tw.archive.ubuntu.com
- 建議將apt sources.list 更換為
- python 3.6.9
- ngrok
- requests
- 爬取中選會網站上的投票數據、上傳圖片至圖床空間
- pandas
- 以DataFrame型式處理CSV資料
- geopandas
- 處理.shp的地圖資料,並調用matplotlib.pyplot產生分層設色圖
- matplotlib.pyplot
- 繪製統計圖表
- mapclassify
- 處理地圖分層方法
- palettable
- 調色盤,使用palettable.cmocean.diverging下的Delta此color map,做藍綠對照
graphviz
sudo apt-get install graphviz graphviz-dev
ngrok
- WSL (Can't use snap)
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.tgz sudo tar xvzf ngrok-stable-linux-amd64.tgz -C /usr/local/bin
- Linux
- Install ngrok via Apt
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
- Install ngrok via Snap
snap install ngrok
- 安裝
pipenv
pip3 install pipenv
- 產生
pipenv
虛擬環境
pipenv --python 3.6
- 在虛擬環境下安裝套件 (需先安裝graphviz)
pipenv install
- 將
.env.sample
改名為.env
,並填入對應SECRET和TOKEN
- Line
- LINE_CHANNEL_SECRET
- LINE_CHANNEL_ACCESS_TOKEN
SM.MSSMMS_API_TOKEN
-
查看虛擬環境下matplotlib存放目錄
- 進入pipenv下的python shell
pipenv run python3 // Ctrl+D 或 輸入 exit() 退出
- 執行python程式碼
import matplotlib matplotlib.matplotlib_fname() # 輸出範例 '.../matplotlib/mpl-data/matplotlibrc' # 目錄 '.../matplotlib/mpl-data'
-
下載Noto_Sans_TC字體,解壓至./fonts/ttf
wget -O Noto_Sans_TC.zip https://fonts.google.com/download?family=Noto%20Sans%20TC
unzip Noto_Sans_TC.zip -d {YOUR_FOLDER}/matplotlib/mpl-data/fonts/ttf/
- 再次進入pipenv下的python shell,重新加載字體
from matplotlib.font_manager import _rebuild
_rebuild()
- run
ngrok
to deploy Line Chat Bot locally
screen -S ngrok
ngrok http 8000 //Ctrl+D to exit
- execute app.py
pipenv run python3 app.py
user
: 起始點,接收到追蹤訊息後進入menu
showFSM
: 此階段隱藏,可從user
和menu
進入,用於回傳FSM圖menu
: 主選單目錄,可從顯示之選單進入以下4個功能階段,在任何階段輸入含有menu
或目錄
的文字可返回目錄voteStats
: 投票數據功能,若輸入合法進入voteStatsRegion
- input:
縣市-鄉鎮市區-村里
,以-,_
分隔皆可,允許只輸入縣市-鄉鎮市區
或縣市
voteStatsRegion
: 顯示輸入地區之投票結果,允許再次輸入,或點擊返回目錄
回到menu
- input:
visualData
: 視覺化數據功能,若輸入合法進入visualDataRegion
- input:
全國
或縣市
,因圖資只到鄉鎮層級,無法產生鄉鎮市區的分層設色圖 visualDataRegion
: 顯示輸入地區之分層設色圖,允許再次輸入,或點擊返回目錄
回到menu
- input:
multiAnalysis
: 複合分析功能,可根據收入、年齡,進行複合分析,分析項目以選單顯示- input:
收入-分析項目
或年齡-分析項目
,選單將呈現主要的項目 selectItem
: 選擇分析項目後允許輸入選取的資料數量,輸入目錄
回到menu
- input:
整數值
,即分析項目下分析前後多少數量 selectNum
: 根據輸入項目、數量,顯示投票結果與對應資料的複合分析,允許再次輸入分析數量、重新選擇分析項目
回到multiAnalysis
、或點擊返回目錄
回到menu
- input:
funcIntro
: 功能介紹,點擊返回回到menu
- 查詢投票數據
- 顯示視覺化資料
- 複合資料分析
- 功能介紹與說明
Setting to deploy webhooks on Heroku.
or you can use Homebrew (MAC)
brew tap heroku/brew && brew install heroku
or you can use Snap (Ubuntu 16+)
sudo snap install --classic heroku
-
Register Heroku: https://signup.heroku.com
-
Create Heroku project from website
-
CLI Login
heroku login
-
Add local project to Heroku project
heroku git:remote -a {HEROKU_APP_NAME}
-
Upload project
git add . git commit -m "Add code" git push -f heroku master
-
Set Environment - Line Messaging API Secret Keys
heroku config:set LINE_CHANNEL_SECRET=your_line_channel_secret heroku config:set LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token
-
Your Project is now running on Heroku!
url:
{HEROKU_APP_NAME}.herokuapp.com/callback
debug command:
heroku logs --tail --app {HEROKU_APP_NAME}
-
If fail with
pygraphviz
install errorsrun commands below can solve the problems
heroku buildpacks:set heroku/python heroku buildpacks:add --index 1 heroku-community/apt
refference: https://hackmd.io/@ccw/B1Xw7E8kN?type=view#Q2-如何在-Heroku-使用-pygraphviz
TOC-Project-2019 ❤️ @winonecheng
Flask Architecture ❤️ @Sirius207