LoginSignup
1
0

More than 5 years have passed since last update.

CygwinのPython(2.7)でmatplotlibを使う

Last updated at Posted at 2018-01-21

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導入手順でした。
ご指摘等あれば、よろしくお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0