手作業で、気象庁のデータ( https://www.data.jma.go.jp/risk/obsdl/index.php )から 1990, 2018年の毎時温度をでダウンロードして、各月で合算してグラフにする・・・なんの意味もないデス。
手作業でcalcちまちまやっても30分あれば済むことを、Do素人が、初pythonで初グラフ。
結果:
環境:
OS : Debian GNU/Linux Stretch, KDE, Python3.5
作業:
pythonでグラフ1
1.python install
2.python venv (Virtual Environments)の設定
3.グラフでつかう matplotlibの日本語表示設定
pythonでグラフ2 別ページ
4.別途、手動で気象庁のcsvデータダウンロード
5,悪運で動いたスクリプト
1.pythonのインストール
pythonバージョン2系はディフォルトで入っている。
python3系で試したいので、パッケージ名 python3.5 , python3.5-venv, python-pip とその依存パッケージをインストール。
(後に使用する python3-matplotlib, python3-pandas などのdebパッケージはここではインストールせず、仮想環境のvenvで pip install した。)
2.venv の設定
設定は、ディレクト以下に作られる。必要なファイルコピー、その後パス通しをやってるみたい。ここでは安易に "venv"というディレクトリ名にした(任意で、py_venvでもtestPythonでもなんでもいい)。/home/$USER/に置き、python3を使う設定とした。(以下、ユーザー名$USER, プロンプト表示は各環境による)。
ターミナルを開いて、
$ cd
$ pwd /home/$USER
$ python3 -m venv ← ここで ディレクトリ venvも作られる。
次に 仮想環境を試してみる
$ cd venv
$ source bin/activate ← 仮想環境の機能開始
(venv) :~/venv$ python -V ← プロンプト頭に (venv)と出る。パイソンのバージョン
Python 3.5.3 ← python3 -V としてないのに、ちゃんとバージョン3.5
(venv) :~/venv/test$ pip3 ← この環境では pip3も pipも同じ。
Usage:
pip
Commands:
install Install packages.
... (省略)
(venv) :~/venv$ pip install pandas ← 先で使うpandasというライブラリもインストール
Collecting pandas
Using cached https:/...
... (省略)
(venv) :~/venv$ deactivate ← 仮想環境の機能を止める
結局、venv環境でpython3を使うには、venvディレクトリで
$ cd venvディレクトリ
$ source bin/activate
・・・
$ deactivate
・・・という流れ。venv を使わなくなったら、ディレクトリごと削除。
[pip のメモ]
pipのバージョンは?
$ pip --version
pip でパッケージは何入れた?
$ pip freeze
pythonのバージョン何にした?
$ python --version
Python 3.5.3
Debian stretchの venvには PySide2もインストール簡単
$ pip install PySide2
3.グラフ作成でつかうmatplotlibの日本語表示の設定
現状は、
$ source bin/activate
(venv) :~/venv$ python ← 対話モード(インタラクティブモード)
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib as mpl
>>> print(mpl.rcParams['font.family'])
['sans-serif'] ← sans-serif だけ
>>> print(mpl.rcParams['font.sans-serif'])
['DejaVu Sans', 'Bitstream Vera Sans', 'Computer Modern Sans Sef', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avantarde', 'sans-serif']
>>> quit() ← 対話モード終了は CTRL+D か quit()
(venv) :~/venv$ deactivate ← venv環境終了
matplotlibは ttfフォント(TrueType フォント)とotfフォント(OpenType)に対応。
以下は Takaoフォント(TakaoGothic, TakaoPGothic, TakaoMincho, TakaoPMincho)の利用で説明。
$ apt search takao
出力に[インストール済み]表記が無い場合、この出力を参考にパッケージをインストール。
(DebianにはデフォルトではTakaoフォントは入っていない。)
$ sudo apt install fonts-takao
インストールの確認を再びpythonで行ってみる。
$ source bin/activate
(venv) :~/venv$ python ← 対話モード(インタラクティブモード)
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.font_manager as fm
>>> fm.findSystemFonts()
この出力を mpl_font.txtなんかにコピペしてやる (改行無いのでエラーでるかも)。
見やすいように、普通のターミナルで整形してソート。
$ cat mpl_font.txt | tr ',' '\n' | sort > font.txt
$ grep Takao font.txt
'/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf'
'/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf'
'/usr/share/fonts/truetype/takao-mincho/TakaoMincho.ttf'
'/usr/share/fonts/truetype/takao-mincho/TakaoPMincho.ttf'
拡張子を抜いたファイル名 TakaoGothic, TakaoPGothic, TakaoMincho, TakaoPMinchoは、matplotlibの設定ファイル matplotlibrc で使う。
venv環境で使うフォントなので、venv環境の対話モードで matplotlibrcの場所を聞く。
>>> import matplotlib as mpl
>>> mpl.matplotlib_fname()
'/home/$USER/python venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc'
設定ファイルの場所がわかったので、quit()してdeacivate
matplotlib を開いてみると、Debianでは行頭が全部'#'でコメントアウト。
"FONT"で検索していくと"#### FONT"以下が見つかる。
195行 # font.family : sans-serif
206行 # font.serif : DejaVu Serif, Bitstream Vera Serif, ...
207行 # font.sans-serif : DejaVu Sans, Bitstream Vera Sans, ,,,
この3行の# を消して、206行の207行のフォントリストの最初にTakaoPMincho,TakaoPGothic,を書き込み保存。
font.family : sans-serif
font.serif : TakaoPMincho, DejaVu Serif, Bitstream Vera Serif, ... ←この行はいじらなくてもいいかも
font.sans-serif :: TakaoPGothic, DejaVu Sans, Bitstream Vera Sans, ...
一旦、フォントキャッシュを消す (すぐ再生されるので気にしない)。
$ rm -r ~/.cache/matplotlib
再度(venv)で確認
(venv) :~/venv$ python ← 対話モード(インタラクティブモード)
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib as mpl
>>> print(mpl.rcParams['font.family'])
['sans-serif']
>>> print(mpl.rcParams['font.sans-serif'])
['TakaoPGothic', 'DejaVu Sans', 'Bitstream Vera Sans', 'Computer Modern Sans Sef', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avantarde', 'sans-serif']
TakaoPGothicを認識
注意) python venv環境の削除や、アップデートの度に matplotlibrcは上書きされてデフォルトに戻るので、matplotlibrcは再設定が必要。
以上で matplotlibの日本語設定終了。
DO素人のメモ