pythonでグラフを描きたいから matplotlib というパッケージをinst.する.
いくつかハマったポイントがあるので, 解決策を提示しつつ作業内容を紹介する.
概要は次の通り.
動作環境
- CentOS 7
- Python 3.6.5
参考
次のサイトを参考に作業を進める.
ハマったポイント
先にハマったポイントを紹介する.
あらかじめ問題を回避したい場合は次の記事を参照しよう.
- matplotlib 使おうとしたら No module named ‘_bz2’ エラーで怒られた
- matplotlib 使おうとしたら No module named ‘_tkinter’ エラーで怒られた
必要なモジュールの解説
これからinst.するパッケージについて簡単に紹介.
- Matplotlib
- NumPy
- SciPy
- SciPyは今回は使わない
以下, 解説.
Matplotlib
Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。
引用: https://ja.wikipedia.org/wiki/Matplotlib
matplotlibのおかげでpythonでグラフが描けるのか.
公式サイトはこれ↓
NumPy ってなんぞや? は次で紹介.
NumPy
NumPyは、プログラミング言語Pythonにおいて数値計算を効率的に行うための拡張モジュールである。
引用: https://ja.wikipedia.org/wiki/NumPy
ちょっと細かいけど, pythonでは モジュール
, パッケージ
という言葉を区別して使っているので注意.
公式サイトはこれ↓
SciPy
今回は使わないけど, 一応紹介.
SciPy は、配列オブジェクトとその他の基本的な機能を備えた NumPy を基礎にしている。
SciPy は統計、最適化、積分、線形代数、フーリエ変換、信号・イメージ処理、遺伝的アルゴリズム、ODE (常微分方程式) ソルバ、特殊関数、その他のモジュールを提供する。引用: https://ja.wikipedia.org/wiki/SciPy
NumPyベースのモジュールかな?
公式サイトはこれ↓
手順
ここからはモジュールのインストールからグラフ生成までの手順を紹介する.
まずは各モジュールのインストール.
# install matplotlib
$ pip install matplotlib
# 確認
$ pip list | grep -i mat
matplotlib 2.2.2
# install numpy
$ pip install numpy
# 確認
$ pip list | grep -i numpy
numpy 1.14.3
使ってみる
次のファイルを作成し, 実行してみる.
# app.py
import math
import numpy as np
from matplotlib import pyplot
pi = math.pi # mathモジュールのπを利用
x = np.linspace(0, 2*pi)
y = np.sin(x)
pyplot.plot(x, y)
pyplot.savefig('sinWave.png') # 画像出力
実行
$ python app.py
エラー
$ python app.py
Traceback (most recent call last):
File "app.py", line 3, in <module>
from matplotlib import pyplot
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/__init__.py", line 127, in <module>
from . import cbook
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 13, in <module>
import bz2
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/bz2.py", line 23, in <module>
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
このエラー解決については別記事でまとめた↓
↑この記事を参考にエラーを解決する.
再チャレンジ.
$ python app.py
今度は別のエラー.
$ python app.py
Traceback (most recent call last):
File "app.py", line 3, in <module>
from matplotlib import pyplot
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
[backend_name], 0)
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 4, in <module>
from . import tkagg # Paint image to Tk photo blitter extension.
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/backends/tkagg.py", line 5, in <module>
from six.moves import tkinter as Tk
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/six.py", line 92, in __get__
result = self._resolve()
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/six.py", line 115, in _resolve
return _import_module(self.mod)
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/site-packages/six.py", line 82, in _import_module
__import__(name)
File "/home/vagrant/.anyenv/envs/pyenv/versions/3.6.5/lib/python3.6/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
このエラー解決方法は次の記事にまとめた.
これから実行するpythonファイルを再掲.
# app.py
import math
import numpy as np
from matplotlib import pyplot
pi = math.pi # mathモジュールのπを利用
x = np.linspace(0, 2*pi)
y = np.sin(x)
pyplot.plot(x, y)
pyplot.savefig('sinWave.png') # 画像出力
実行
$ python app.py
生成された画像ファイルを確認.
ok.
今回は以上.