matplotlibのインストール

2021-05-04追記

macOS環境ではこれだけで良いみたい。

  • pip3 install matplotlib
  • cp /usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/
    • 今はpython3.9でやった

本題

最小二乗法を実装したくなった。 というか、実際計算してみたものをグラフで確認できないとなにもわからなくて、それがつらかった。つまり自分の理解のためだ。

matplotlibインストール

さあ、まずはmatplotlibからだ。

チュートリアル動作確認

# https://matplotlib.org/tutorials/introductory/usage.html#a-simple-example
import matplotlib.pyplot as plt
# import numpy as np

fig, ax = plt.subplots()    # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])   # Plot some data on the axes.

何にも出てきやしない。まあ予想はできている。

macOS上でmatplotlibを使うにおいて最大の問題は、backendだ。 これが結構面倒だし、はまる。以前も結構はまった。

確かそのときは、TkAggにした気がするんだよなぁ。

設定ファイルはどこへ

matplotlibrcをどこに置くんだろう。

https://matplotlib.org/tutorials/introductory/customizing.html#the-matplotlibrc-file

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc'

ここはいじれんなぁ。 でもひな形がおいてあったので借りたい。

https://matplotlib.org/faq/troubleshooting_faq.html#locating-matplotlib-config-dir

>>> import matplotlib as mpl
>>> mpl.get_configdir()
'/Users/xxx/.matplotlib'

ここに置いたらいいのかな?

cp /usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/Users/xxx/.matplotlib/matplotlibrc'

いいね、変わってくれた。 ここの優先度が正しく反映されている。

backendを変更する

自分の環境に、ただで動くbackendはなかった。 しょうがないなぁ。TkもQtも入れたくないんだけど。 PyQt5を入れる。

pip3 install PyQt5

初回だけコマンドに時間かけてたけど、動かない。OSアップデートも待機してるし、ついでに再起動しよう。だるいなぁ

ミスに気づいた

これは馬鹿をやったかも。インタラクティブシェル上でやる前提じゃないか?このデモは。 ユーザー入力待ちに生かされている前提ではないか? スクリプトとして実行すると、スクリプトが終わったらPythonごと死ぬので表示していたグラフも即死。

だめだ。REPL上でも結局なんかPythonのロケットみたいなアプリが動いていない。

いや、もっと根本的なミスだ。 matplotlib.pyplot.show()を呼んでいない。

というわけで、最終コードはこう。

# https://matplotlib.org/tutorials/introductory/usage.html#a-simple-example
import matplotlib.pyplot as plt
# import numpy as np

fig, ax = plt.subplots()    # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])   # Plot some data on the axes.
plt.show()

つらいわー、こんなんでまるまる1時間くらい潰したんだけど。 昔やった記録を残しておかないとだめですね…

あと、 https://matplotlib.org/tutorials/introductory/usage.html このチュートリアルがクソ。環境を明示していない。 大方Jupyter Notebookを想定しているんじゃない?

A lot of documentation on the website and in the mailing lists refers to the "backend" and many new users are confused by this term. って、自分で言ってんのにこれじゃあほとんど自滅でしょ。

というわけで、最小二乗法にたどりつけず。 収穫は、Qt5Aggが動いたことかな。 以前使ったTkAggはなんとなく不安定感があったから、乗り換えられそうで良かった。