pythonでグラフを描く(1)-matplotlib

レポート用にExcelで実験データのグラフ描くのに苦労して,結局手描きで描いたということがあった.どうやらpythonではMathematicaのようにグラフを描けるライブラリが存在するらしいのでやってみる.Mathematicaは大学のPCにしか入ってないので家では使えなくてつらい.

  • Python 2.7.10
  • Matplotlib 1.5.0

 

とりあえず描く

とっつきには目に見える進捗が欲しいというわけで適当な直線を描いてみる

import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

f:id:TKYMa:20151104210901p:plain

このようなウィンドウが表示された.

ご想像のとおりplot(X,Y)で座標(X,Y)をプロットしている.そのあとに続く'ro'の部分は赤色で丸をオプションで示している.

最後のshow()はグラフを出力するのに必要で,いったん出力するとそれ以前のplotの内容は失われる.もう一度plt.show()してみればなにも表示されないのが確かめられるはずだ.

plt.plot([1,2,3,4])
plt.show()

ではこのようにリストを1つだけ渡すとどうなるのだろうか?

matplotlibはこのリストがYの値を示すものだと予測し勝手にXの値を生成する.そして以下のような図が出力されるだろう.

f:id:TKYMa:20151104212103p:plain

これではX軸方向は0から始まっているもののY軸方向は0から始まっていない.軸について設定したいときには以下のコマンドを使う.

 

plt.plot([1,2,3,4],'bo')
plt.axis([0,4,0,5])
plt.show()

 X軸は0から4,Y軸は0から5までの範囲へ軸が変化しているだろう(ついでにプロットも青点になっている).

グラフの体裁を整える

さらによりグラフらしく見せるためにはグラフの名前,軸の名前,凡例が必要だ.それらも簡単に追加できる

plt.plot([1,2,3,4],[1,4,9,16],'bo',label = "squared")
plt.legend()
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Figure 1")
plt.axis([0,5,0,25])
plt.show()

f:id:TKYMa:20151104213729p:plain

このようなグラフが出力されただろうか.

グラフの名前はplt.title("Figure 1")で,軸の名前は見てのとおりplt.xlabel("X")で指定している.

凡例はplot()内のlabelで指定しplt.legend()で凡例の表示を命令できる.もし凡例の位置を変えたい場合にはplt.legend(loc = 'upper left')などオプションで操作できる.

 

これらの内容はすべて公式のビギナーガイド(Beginner’s Guide — Matplotlib 1.5.0 documentation)から取ってきたものなのでオプションの内容とかはそちらを参照されたい.(よく使うものは纏めたいなあと思いつつそれほどまだ使っていない)