この記事を読むとできるようになること
matplotlibで超基本的な図が描ける
gnuplot で図が作れるようになってしばらくすると,「もっと簡単に綺麗な図が描きたい」と思うようになると思います(※個人差があります).
研究発表の図を作るのに無料で使えるツールとして有名なものの1つがmatlotlibです.かなり綺麗な図が描けます(※個人の意見).
この記事では,すぐに使えるmatplotlibでの図の描き方の基礎中の基礎だけをまとめました.
より詳細な使い方については,
pythonのmatplotlibの使い方をまとめてみた
が大変わかりやすく,参考になります.
特に,オブジェクト指向インターフェースは便利ですので使えるようになると良いです.
- 環境
- macOS mojave 10.14.6
- Python 3.7.5
ここではmatplotlibを用いて簡単な関数を描いてみましょう
$y = f(x)$ を描く時にコンピューター上で何が行われているかというと
(わかりやすさのために用語の正確さは無視すると),
$x$の組(配列)の要素$x_i$ のそれぞれに対し,
$y$の組(配列)の要素$y_i$ が計算されて,その組がプロットされています.
gnuplot でも同じです.
(なので,特に対数プロットにおいて,変化が急な部分ではプロット点を細かくとってあげないと正しい図にならないことがあります)
Python では次のようにして組$x$を作ることができます.
これは等差数列の配列を作っていると思ってください.
x = numpy.arange(-10, 10, 0.01)
引数は,
x = numpy.arange(xの最小値,xの最大値,公差)
です.
この等差数列(みたいなもの)を使って$y = f(x)$ を描画することができます.
では,試しに放物線を描いてみましょう.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# これはコード中に全角文字(日本語)を書く時に必要
#以下はおまじないみたいなもの
#numpy に np という名前をつける
import numpy as np
#同様に,matplotlib.pyplot に plt という名前をつける
import matplotlib.pyplot as plt
#x = np.arange(xの最小値,xの最大値,刻み)
x = np.arange(-10, 10, 0.1)
#描画する関数
y = x*x
#横軸にx,縦軸にyをとって描く
plt.plot(x, y)
#plot表示
plt.show()
では,次によく使うオプションをつけていろいろ描いてみましょう.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.1)
y = x*x
#描画範囲を指定する場合(x軸でも同様)
plt.ylim([0, 50])
#タイトルと軸ラベル
plt.title("TITLE")
plt.xlabel("Xlabel")
plt.ylabel("Ylabel")
#grid表示のon/off (デフォルトはFalse)
plt.grid(True)
#ラベルや線色,太さなどのオプション
plt.plot(x,y, label="legend", color="red", lw=3, ls="--")
#凡例を表示
plt.legend()
#plot表示
plt.show()
図を保存するには,最後に
plt.savefig("sample_figure.eps")
などと書けばOKです.
ここで紹介したものは一例で,他のオプション(線色とか線種とか凡例の位置とかその他いろいろ)はググって必要なもの/お気に入りものを見つけてみてください.