Python
Cygwin
matplotlib

CygwinのPython(2.7)でmatplotlibを使う

Cygwinでmatplotlibを使えるようになるまでに、いくつかハマりどころがあったので、過程を記しておきます。

環境

諸事情により、Cygwin 32bit + Cygwin版Python2.7 + matplotlib 2.1.1 です。

手順

Cygwin自体の導入は省略します。

1. Pythonとpipのインストール

Python本体の他、python-develパッケージも必要です。
pipは、python-pipというパッケージに入っています。

2. matplotlibのインストール

上記でインストールしたpipは、python2系なら「pip2」というコマンド名で呼び出します。

$ pip2 install matplotlib

途中でエラーメッセージが出たら
"gcc: error: spawn: No such file or directory" → gcc-g++が入っていないのでインストールします。
"Perhaps you need to install ..." → 必要なパッケージをインストールして再試行します。

3. importとバージョンの確認

インストール完了したら、Pythonを対話モードで起動して、matplotlibのバージョンを確認してみます。

$ python
>>> import matplotlib
>>> matplotlib.__version__
'2.1.1'

4. グラフ描画の準備

X11カテゴリのパッケージを一通りインストールしておきます。
Xサーバを起動して、ディスプレイを指定します。

$ run xwin -multiwindow -noclipboard
$ export DISPLAY=:0.0

5. グラフ描画のテスト

何の変哲もないグラフを出力してみます。

$ python
>>> import matplotlib.pyplot as plt
>>> plt.plot(range(10))
[<matplotlib.lines.Line2D object at 0xfd8fae2c>]
>>> plt.show()

6. (※出力されない場合) バックエンドの確認・変更

matplotlibのバックエンドを確認します。

>>> import matplotlib
>>> matplotlib.get_backend()
u'agg'

'agg'等、GUI非対応の設定になっていたら変更します。
使用可能なバックエンドと、必要なライブラリについては、公式ドキュメントの表を参照ください。
matplotlib Usage - What is a backend?

ここでは、Qt4Aggを使うように変更してみます。
qt4パッケージをインストール

$ apt-cyg install python-pyqt4

matplotlibrcファイルの場所を確認する

>>> matplotlib.matplotlib_fname()
u'/usr/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'

matplotlibrcを開いて、backendを書き換えて保存する
backend : Qt4Agg

さいごに

バックエンドの問題は、エラーメッセージが出るわけでもないので、結構手こずりました。

ちなみに Cygwin 64bit + Windows版AnacondaのPython3.6 + matplotlib 2.1.1 という環境も併用していますが、
そちらは最初からpipも入っているし、バックエンドの問題もなかったです。
ただ余談ですが、Windows版のPythonをCygwinから対話モードで起動するときは、python -iと明示的にオプションをつけないといけないのですね。

以上、個人的につまづいた箇所を中心に、Cygwin+matplotlib導入手順でした。
ご指摘等あれば、よろしくお願いします。