matplotlib について
matplotlib とは?
※ matplotlibのライブラリ詳細はこちら
matplotlibはPythonにおけるグラフ描画ライブラリであり、SciPy.orgのエコシステムの1つとなっています。
現代的なオブジェクト指向のAPIを提供しており、Pythonでグラフを描画する際のデファクトスタンダードです。
APIドキュメント
matplotlibの公式APIドキュメントはこちらです。なお、当サイトでもこちらにmatplotlibのAPIについて日本語でまとめていますので併せてご覧ください。公式ドキュメントを参考にしていますが、意訳やこちらで解釈した内容なども含まれていますので、その点はご注意下さい。
APIドキュメントの注意点
可変長引数
Pythonは動的型付け言語であり、関数・メソッドの引数の型も柔軟に定められています。その一つとして、特にmatplotlibのドキュメントには関数・メソッドの引数に「*args」「**kwargs」というのが頻繁に用いられています。これは可変長引数というもので、以下のようなものです。
- *args : 複数の引数をタプルとして受け取る
- **kwargs : 複数のキーワード引数を辞書として受け取る
可変長引数で定義されていると、APIドキュメントを見てもどの引数を受け付けられるのかわかりにくいですが、その分関数・メソッドを柔軟に定義できるということなのだと思います。
scalarについて
matplotlibのドキュメントには関数・メソッドの引数のデータ型にscalarというのが頻繁に出てきます。これはarray-likeと対になる用語で、「配列ではないもの」という意味です。明確な定義はないのですが、matplotlibでは特に配列ではない’数値’のことをscalarと表現しているようです。線型代数学の用語としてのscalarだと理解してよいと思います。
pythonの数値型である int / float だけではなく、numpy.uint8 などの数値型も含むのでこういう表現になっているのでしょうか。
なお、NumPyでもScalarTypeというものがありますが(ドキュメント)、こちらは数値だけでなく文字列なども入ってしまうので注意しましょう。
プロパティについて
pythonのクラスにはプロパティという仕組みが用意されており、クラス中の変数を非公開として、getter / setter メソッドからのみアクセスできるようにすることができます。具体的には、プロパティ名を使ってアクセスすることで、自動的に getter / setter メソッドが呼び出されます。これにより、変数に想定外の操作をされることを防ぎ安全性を高めることができます。
matplotlibのクラスにもAPIでプロパティとして記載されているものがありますが、実はこのプロパティはpythonにおけるプロパティとは少し違うようです。実際にソースコードを見ると、そのプロパティ名の getter / setter メソッドは用意されているのですが、それがデコレーター(@property, @プロパティ名.setter)を用いて「プロパティ」だとは登録されていないので、プロパティ名でアクセスしても自動的に getter / setter メソッドを呼び出すことはできません。
具体的にはTextクラスのインスタンスtextのbackgroundcolorプロパティに値を代入するには、
# この方法では代入できない text.alpha = 0.5 # プロパティに代入するにはsetterを用いることが必要 text.set_alpha(0.5) # プロパティの値を取得するにはgetterを用いることが必要 a = text.get_alpha()
とする必要があります。
本サイトにおける各クラスのライブラリ詳細では、getter / setter メソッドが用意されている項目については「設定項目」として記載しています。
matplotlib活用のポイント
- グラフ、テキストなどの色の指定 → こちら