エクセルではシートから作図が 画面を選択することでできますが、pythonで同様のことをするにはプログラムで作成 します。pythonではエクセルよりも大きなデータや複雑なデータを扱うことが あるためです。
pythonで見栄えの良いグラフを上手く 作成するには、配列とグラフの関係を把握することが近道です。
その他にも軸名やプロットのマーカー種類、色の操作、矢印による図内のコメントの作成方法も解説します。
matplotlibで最も簡単なグラフの作成(y値のみ指定)
matplotlibを用いた最も簡単なグラフで直線を作成します。
plotに配列で数値を入れます。xは値の指定がない場合、[0,1,2,3]となり、y軸は[1,2,3,4]となります。plt.show()で設定したグラフが表示されます。縦軸、横軸の名称を「y numbers」、「x numbers」と表示しています。
plotに配列で数値を入れます。xは値の指定がない場合、[0,1,2,3]となり、y軸は[1,2,3,4]となります。plt.show()で設定したグラフが表示されます。縦軸、横軸の名称を「y numbers」、「x numbers」と表示しています。
- 直線のグラフ( コード例)
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
#ラベルの表示
plt.ylabel('y numbers')
plt.xlabel('x numbers')
plt.show()
最も簡単なグラフの作成2(xとy値をそれぞれ指定)
散布図の作成です。
xとyの値を指定します。エクセルではxとyの組み合わせで点を表しますが、pythonの場合は、x、yとそれぞれに配列を入れることで指定します。(x,y)とならないことでプロットの座標が例では分かりにくくなります。
マーカーの形や色を指定することもできます。 例ではマーカーを'ro'としてred赤で「●」bで青の意味となっています。
plt.plot([1,2,3,4], [1,4,9,16], 'bo')
グラフの描画の範囲を指定することもできます。 下記のようにxの最大、最小、yの最大、最小の順で指定します。
plt.axis([xの最小値, xの最大値, yの最小値, yの最大値])
- 散布図のグラフ(コード例)
import matplotlib.pyplot as plt
#データの設定
plt.plot([1,2,3,4], [1,4,9,16], 'bo')
#グラフ範囲の指定
plt.axis([0, 6, 0, 20])
#ラベルの書き方
plt.ylabel('y numbers')
plt.xlabel('x numbers')
plt.show()
マーカーの指定方法
マーカー種類の指定
マーカー'ro'は色(r:red)と種類('o':●)を表していました。色と種類をそれぞれ指定することができます。下記の書式はどちらでも同じ結果になります。
plt.plot([1,2,3,4], [1,4,9,16], color='blue', marker='o')
plt.plot([1,2,3,4], [1,4,9,16], 'bo')
matplotlibで使用できるマーカの種類一覧は、下記の表になります。
- matplotlibで使用できるマーカの種類一覧
マーカー色の指定
マーカーに色を指定するにはmatplotlibで使用できる色の一覧を参照してください。
マーカーサイズの指定
マーカーのサイズを変更には、下記のようにmarkersizeで指定することができます。
plt.plot([1,2,3,4], [1,4,9,16], color='blue', marker='o' ,markersize=12
矢印で引き出し、コメントを追加したい場合
グラフの解説をするためのコメントを引出し線(矢印)で入れることもできます。
plt.annotate('text', xy=(1.25, 1), xytext=(1.5, 1.25),arrowprops=dict(arrowstyle="->"))
コメントの内容と矢印の起点、テキストの位置の座標を入れます。 arrowstyleでスタイルを変更すると矢印の種類を選択できます。
matplotlib.pyplot.annotateを参照ください。
import matplotlib.pyplot as plt
plt.plot([1], [1], 'bo',markersize=12)
#矢印付きのコメントを記載する
#xy:矢じりの先頭 xytext:テキストの先頭 以降、矢印の形と色(角度や曲がり方も調整できる)
plt.annotate('text', xy=(1.25, 1), xytext=(1.5, 1.25),arrowprops=dict(arrowstyle="->"))
#描画の範囲を指定 x_mini x_max y_mini y_max
plt.axis([0, 2, 0, 2])
#軸を非表示
#plt.axis("off")
plt.show()
軸をoffにすることで図のように扱えます。
plt.axis("off")