はじめに
新型コロナのcsvデータがNHKからダウンロードできるので、そのcsvデータを加工編集しx軸に年月日、y軸に各県毎の感染者数等のグラフを作成し、webで表示するまでのプログラムを作成したので公開します。
- csvデータの編集には、pandasを使用しました。
- グラフ作成にはmatplotlibを使用しました。
- Web構築のフレームにはFlaskを使用しました。Jinja2も使用しています。
- Webサーバーにはpythonanywhereの無料版を利用しました。
環境
- 開発環境
- WIndows10
- Pycharm
- Python 3.8
- pythonanywhere
- 無料版
ディレクトリ構成とファイル
webサーバー pythonanywhere でのディレクトリ構成とファイルです。
mysite/
├── csv/
│ └── COVID-19_by_NHK.csv NHK提供のcsvファイル
├── covid19_graph.py csvデータを編集、加工、グラフ化する
├── fig_manager.py グラフファイルを削除
├── flask_app.py Flaskのapp
├── static/
│ └── images/ ここに作成したグラフを格納
└── templates/
├── COVID-19_error.html エラー表示
├── COVID-19_outofservice.html サービス外表示
├── COVID-19_result.html グラフを表示
└── COVID-19_top.html トップ
プログラムおよび説明
- flask_app.py
- covid19_graph.py
- fig_manager.py
- COVID-19_top.html
- COVID-19_result.html
- COVID-19_error.html
- COVID-19_outofservice.html
後で書きます
pythonanywhereでWEB化
- すでに、pythonanywhere にユーザー登録済みとします。
- pythonanywhere の Web 画面で、新しいappを作成します。フレームワークはFlaskを選択。pythonバージョンは適切なものにしてください。
- Source code:ディレクトリとWorking directory:ディレクトリは同じにします。できれば、/home/(user)/mysite にすれば楽です。
- 開発環境で作成した、pythonソース、htmlテンプレートをpythonanywhereの所定のディレクトリにコピーします。私は個数が多くないので、1個づつ upload しました。
- 必要なディレクトリを作成します。
- Source code:ディレクトリとWorking directory:ディレクトリは同じにします。
- pythonanywhere の Web 画面で、Reloadします。これで app が起動されてWebが使えるようになります。
WEBでの実行
- http://covid19graph.pythonanywhere.com/ を開いてください。次の様な画面が表示されます。
- 条件を指定して[グラフ表示]ボタンを押してください。以下のようなグラフが表示されます。
クレジット表示
- グラフの元データ(csv)は、NHKからダウンロードしています。ダウンロード元は、https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv です(実際は、:を半角にしてください)。ここには、「詳しい規約はこちら」があり、「新型コロナウイルス関連データ・ダウンロードサービス利用規約」が書かれています。
- それに従い、グラフ画面には「※情報:NHKまとめ。グラフは作者が編集・加工したものです。」というクレジットを記載しています。
以上