全然簡単なことだけれど、角度0~2πを軸としたデータなど、円状にプロットしたいときのやり方についてのメモ。
theta が角度、今回は2πまでを10°ごとに分けるためにnp.linspace()を使った。これを実行すれば、
こんな感じになってくれる。
やり方だけならこれで良いんだけど、今までplt.plot()
しか使ったことが無かったので、このコードがなんなのかメモしていく。
import ~~
と変数の定義については省略。
そもそも matplotlib のキホン
matplotlib では、出力される画像全体のことをfigure
、その上に一つ一つのグラフax
を乗っけているらしい。つまり、今回の7行目plt.figure()
は、そもそもの画像全体を作成する関数だったということだった。今回はキーワード変数figsize
で画像のサイズを設定している。他にも背景色とか外枠の色とかも決めれるらしい。
plt.figure()
figure
を作成する関数。返り値がfigure
オブジェクト。これが無いと何も始まらない。引数はいろいろあって、今回は画像のサイズだけ指定している。
figure.add_subplot()
クラスfigure
のメソッド。返り値は上で書いた一つ一つのグラフax
。引数の111
は、縦1
分割、横1
分割した中の1
番目、という意味で、本来(1, 1, 1)
で書くものをこう書いてもいいらしい。
結局グラフはここで作ってるということで、今回のキモはキーワード変数projection = "polar"
。これを指定すると極座標グラフになる。これを外してみると、普通の直交座標平面にプロットされる。
公式のリファレンスを眺めてみると、他にprojection
に与えられる変数としてはmollweide
とか書いてある。調べてみると、モルワイデ図法ってのがあるらしい。色々あるけど、多分しばらくはpolar
しか使わないと思う。
axes.plot()
plotって書いてあるからこいつが代表で良いじゃんという感じだけど、こいつはあくまで折れ線グラフのプロット。第一引数は横軸・第二引数は縦軸。らしいけど、今回は第三引数に"o"
を入れてるから、散布図になっている。実は散布図にするときはaxes.scatter()
で良いらしい。
おわり
ということで上のコードに使った分は理解できたのでよしとします。
わかりやすかったQiitaのページ:
公式のリファレンス: