基本事項
理解すべきこと
|
Matplotlib理解すべきことMatplotlib を使うために,最初に理解すべきことを説明します. 目次基本事項プロット作成matplotlib.pyplotは,MATLAB のように機能させるコマンドスタイル関数のコレクションです.これを使うと,Python で様々なプロットが作成ができます. Matplotlib を使うためには,matplotlib.pyplot インポートします.これ (matplotlib.pyplot) はプロットを作成するための関数の集合です.これに含まれる関数は,Figure (プロット領域) の作成やラベルの装飾,プロットの作成などの機能を提供します.要するに,matplotlib.pyplot インポートし,それに含まれる関数を使うとプロットの作成ができるということです. 用語の説明Matplotlib 用語図1に,Matplotlib のプロットで使う用語を示します.プロット作成のアプリケーションではお馴染みの用語だと思います.ただし,Excel とは異なりますが...Matplotlib 特有の用語は「Figure」と「Axis」です.これらの詳細は次節で説明が,簡単に言うと前者はひとつ以上の Axis を含んだ描画領域で後者はプロットのことです. マニュアルを見ると「Artist」とう用語もしばしば遭遇します. 図1: Matplotlib の用語 (ソースコード) Figure と Axis の違いMatplotlib では Figure と Axes (Axis) という単語が,しばしば使われます.文字通りの図とか軸 (x軸, y軸, z軸) として使われる場合もありますが,しばしば以下の意味で使われます.
図2に,Figure と Axis を示します.ひとつの Figure に4個の Axis (複数形で Axes) があります.それにしても,なんでプロットが Axis なんだ.分かり難いし,多くの人が誤った認識を持つでしょう. 図2: Figure と Axis (ソースコード) 重要な用語FigureFigure は全ての Axes と Artist, Canvas を持ちます.Figure は少なくともひとつ以上の Axis を持ちます.プロットを作成する台紙の ArtistFigure や Axes,Axis オブジェクトを含めて,Figure に表示されるものはすべて ARTIST です.これには,Text オブジェクトや Line2D オブジェクト,collections オブジェクト,Patch オブジェクトなどです.Figure がレンダリングされると,すべてのアーティストがキャンバスに描画されます. ほとんどのアーティストは斧に縛られています。 このようなアーティストは、複数の軸で共有したり、ある軸から別の軸に移動したりすることはできません。 Matplotlib のインターフェースMatplotlib には,二つのインターフェース (オブジェクト指向 API と Pyplot) あります.プロット作成には,オブジェクト指向インターフェースを使うことを強く勧めます. オブジェクト指向 API インターフェースの例このインターフェースでは,Axis のインスタンスを用いて,プロットを作成します. # -*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt # --- プロットデータの作成 --- x = np.linspace(-50, 50, 512) y = np.sin(x)*np.exp(-np.abs(x)/10) # --- プロットの作成 OO-API --- fig = plt.figure() # Figure インスタンス作成 ax = fig.add_subplot(1,1,1) # Axis インスタンス作成 ax.set_xlabel("x", fontsize=14, fontname='serif') ax.set_ylabel("y", fontsize=14, fontname='serif') ax.tick_params(axis='both', length=10, which='major') ax.tick_params(axis='both', length=5, which='minor') ax.set_xlim([-50, 50]) ax.set_ylim([-1.0,1.0]) ax.minorticks_on() ax.plot(x, y, 'r-') # ----- プロットの表示 ----- fig.tight_layout() plt.show() # ----- プロットファイルの作成 ----- fig.savefig('sin_exp.pdf', orientation='portrait') fig.savefig('sin_exp.svg', orientation='portrait') fig.clf() Pyplot インターフェース の例pyplot の関数は,Figure を作成するための機能がそろっています.たとえば Figure を作成し,そこにプロット描画します.プロット領域にいくつかの線をプロットし,ラベルで装飾することなどができます.pyplot の関数は,主にインタラクティブなプロットと単純なプログラムによるプロット生成を対象です. # -*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt # --- プロットデータの作成 --- x = np.linspace(-50, 50, 512) y = np.sin(x)*np.exp(-np.abs(x)/10) # --- プロットの作成 OO-API --- plt.xlabel("x", fontsize=14, fontname='serif') plt.ylabel("y", fontsize=14, fontname='serif') plt.tick_params(axis='both', length=10, which='major') plt.tick_params(axis='both', length=5, which='minor') plt.xlim(-50, 50) plt.ylim(-1.0,1.0) plt.minorticks_on() plt.plot(x, y, 'r-') # ----- プロットファイルの作成 ----- plt.savefig('sin_exp.pdf') plt.savefig('sin_exp.svg') # ----- プロットの表示 ----- plt.show() plt.close() ページ作成情報参考資料
更新履歴
|