python matplotlibの使い方

pythonでグラフを描きたいから matplotlib というパッケージをinst.する.
いくつかハマったポイントがあるので, 解決策を提示しつつ作業内容を紹介する.
概要は次の通り.

動作環境

  • CentOS 7
  • Python 3.6.5

参考

次のサイトを参考に作業を進める.

ハマったポイント

先にハマったポイントを紹介する.
あらかじめ問題を回避したい場合は次の記事を参照しよう.

必要なモジュールの解説

これから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.
今回は以上.

スポンサーリンク
336 x 280 – レクタングル(大)
336 x 280 – レクタングル(大)
  • このエントリーをはてなブックマークに追加

この記事が気に入ったら
いいね!しよう

スポンサーリンク
336 x 280 – レクタングル(大)
トップへ戻る