- Pythonでグラフを描きたいんだけど、どうしたらいいの?
- グラフの範囲指定の方法は?
- 線や点の種類ってどう変えるの?
Pythonでデータを扱う上で、グラフ化、可視化するツールが必要になります。
そこで、使うライブラリがMatplotlibライブラリ!
例えばこんなコマンドを入力することで、グラフを作成したりファイルに保存したり出来ます。
import matplotlib.pyplot as plt #pltという名前の関数名
x = [1, 2, 3, 4, 5, 6, 7, 8]
y1 = [10, 20, 30, 50, 80, 130, 210, 340]
y2 = [10, 15, 30, 45, 60, 75, 90, 105]
plt.xlabel('X-axis') #x軸の名前
plt.ylabel('Y-axis') #y軸の名前
plt.xlim(0,10) #x軸範囲指定
plt.ylim(0,400) #y軸範囲指定
plt.grid() #グリッド
plt.plot(x, y1, marker="o", color = "red", linestyle = "--")
plt.plot(x, y2, marker="v", color = "blue", linestyle = ":")
plt.savefig("filename")
前回は、Pythonの行列演算Numpyを学びました。
関連記事【NumPy】Python(パイソン)で行列計算!配列関数の使い方を紹介
今回は、Pythonにおけるグラフ描画ライブラリ、Matplotlibの使い方を学びましょう!
- Pythonのグラフの基本的な使い方
- Pythonで複数のグラフ描画
- Pythonでグラフの色や線・点の変更方法
以下、Jupyter notebookを使って実際にPythonのコードを書いていきます。
まだPythonの環境を構築していない方はこちらの記事をお読みください。
関連記事Python(パイソン)環境をAnaconda(アナコンダ)で構築!Jupyter notebookの使い方は?
Pythonグラフ描画の基本(Matplotlib)
Pythonのグラフ描画ライブラリ、Matplotlibを使います。
Anacondaの一環として集力されているので、Anacondaを使っている方は新たにインストールは不要です。
基本的には以下のコマンドを入力するだけでPythonでグラフが描画できます。
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[0,6,12,24,48])
- 「import matplotlib.pyplot as plt」はMatplotlibを呼び出す決り文句
- plt.plot(x,y)で2次元のグラフが描画可能
ただこれだけだと味気ないですよね。。
グラフタイトルや軸ラベル、範囲指定、凡例の追加
グラフにタイトルやx軸やy軸の名前をつけたり、描画の範囲指定してみましょう!
import matplotlib.pyplot as plt
plt.figure(figsize=(4,4))
plt.plot([0,2,4,6,8,10],[0,6,12,24,48,96],label="curve")
plt.xlabel("X-axis")#x軸の名前
plt.ylabel("Y-axis")#y軸の名前
plt.xlim(0,10) #x軸の範囲
plt.ylim(0,100) #y軸の範囲
plt.title("Python plot") #グラフタイトル
plt.legend(loc="upper left") #グラフ凡例の場所
plt.show()
- plt.xlabel(“X-axis”):x軸の名前
- plt.ylabel(“Y-axis”):y軸の名前
- plt.xlim(0,10):x軸の範囲
- plt.ylim(0,100):y軸の範囲
- plt.title(“Python plot”):グラフタイトル
- plt.legend(loc=”upper left”):グラフ凡例の場所
凡例の場所は、loc=”upper left”で「左上」に指定してますが、下記コマンドで場所を変更できます。
- best
- upper right
- upper left
- lower left
- lower right
- right
- center left
- center right
- lower center
- upper center
- center
“left”単体はないんですね?
Pythonで複数のグラフを描画する方法は?
Pythonでは複数のグラフを描画することが出来ます。
同一のグラフに描画
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
x = np.linspace(0,10,21)
y = x
z = (x-2)**3
w = ((x-3)*(x-6))**2
plt.plot(x,y,label="y=x")
plt.plot(x,z,label="z=(x-2)^3")
plt.plot(x,w,label="w=((x-3)(x-6))^2")
plt.legend()
Pythonでは自動で同一のグラフに描画されます。
ちなみに、x軸の作成にNumpyライブラリを使ってますが、「0から10まで0.5刻みの要素」を作成しています。
NumPyライブラリの使い方はこちらの記事を御覧ください。
各グラフの色や線、点の種類などが変更可能です。
plt.plot(x,y,"r-o",x,z,"b--^",x,w,"g:s")
plt.plot(x, y, marker=”点”, color = “色”, linestyle = “線”)という書き方が基本ですが、plt.plot(x,y,”色線点”)というように短く記載することもできます。
色の指定は以下です。
‘b’ | 青 |
‘g’ | 緑 |
‘r’ | 赤 |
‘c’ | シアン |
‘m’ | マゼンタ |
‘y’ | 黄 |
‘k’ | 黒 |
‘w’ | 白 |
線の種類は以下のとおり。
‘-‘ | 実線 |
‘–‘ | 破線 |
‘-.’ | 破線と点線 |
‘:’ | 点線 |
点の種類の代表例は以下です。
‘.’ | 点 |
‘o’ | 丸 |
‘^’ | 三角形 |
‘s’ | 四角形 |
‘p’ | 五角形 |
‘*’ | 星形 |
‘+’ | プラス形 |
‘x’ | x形 |
‘D’ | ひし形 |
別々のグラフに描画
別々のグラフとして表示するには、subplot
を使います。
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
x = np.linspace(0,10,21)
y = x
z = (x-2)**3
w = ((x-3)*(x-6))**2
plt.subplot(1,3,1) #1行3列1番目
plt.plot(x,y,"r",label="y=x")
plt.ylim(0,1000)
plt.legend()
plt.subplot(1,3,2) #1行3列2番目
plt.plot(x,z,"b",label="z=(x-2)^3")
plt.ylim(0,1000)
plt.legend()
plt.subplot(1,3,3) #1行3列3番目
plt.plot(x,w,"g",label="w=((x-3)(x-6))^2")
plt.ylim(0,1000)
plt.legend()
plt.tight_layout() #グラフ同士の重なりを防ぐ
plt.subplot(1,3,1)
では、1行、3列の1番目を指定しています。
グラフ位置の指定
グラフの位置を指定して描画することもできます。
plt.subplots
の引数でaxの配置を1行1列の形に指定しています。
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
x = np.linspace(0,10,21)
y = x
z = (x-2)**3
w = ((x-3)*(x-6))**2
fig,ax = plt.subplots(1,1,figsize=(4,4)) #図のサイズ指定
ax.plot(x,y,"r",label="y=x")
ax.plot(x,z,"b",label="z=(x-2)^3")
ax.plot(x,w,"g",label="w=((x-3)(x-6))^2")
ax.legend()
ax.set_title("three curves")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
別々のグラフに描画する場合は、下記のようにplt.subplots
を使って書きます。
fig,ax = plt.subplots(1,3,figsize=(10,3))
print(ax)
ax[0].plot(x,y,"r",label="y=x")
ax[1].plot(x,z,"b",label="z=(x-2)^3")
ax[2].plot(x,w,"g",label="w=((x-3)(x-6))^2")
for i in range(3):
ax[i].legend()
ax[i].set_xlabel("X-axis")
ax[i].set_ylabel("Y-axis")
fig.tight_layout()
2行2列の場合は以下のように書きます。
fig,ax = plt.subplots(2,2,figsize=(8,6))
ax[0,0].plot(x,y,"r",label="y=x")
ax[0,0].legend()
ax[0,0].set_xlabel("X-axis")
ax[0,0].set_ylabel("Y-axis")
ax[0,1].plot(x,z,"b",label="z=(x-2)^3")
ax[0,1].legend()
ax[0,1].set_xlabel("X-axis")
ax[0,1].set_ylabel("Y-axis")
ax[1,1].plot(x,w,"g",label="w=((x-3)(x-6))^2")
ax[1,1].legend()
ax[1,1].set_xlabel("X-axis")
ax[1,1].set_ylabel("Y-axis")
グラフの中にグラフを表示
グラフの中にグラフを表示することが出来ます。
fig.add_axes([原点のx座標,原点のy座標,横幅,縦幅])
で指定します。
fig = plt.figure(figsize=(4,4))
ax = fig.add_axes([0,0,1,1])
ax2 = fig.add_axes([0.2,0.3,0.3,0.2])
ax3 = fig.add_axes([0.6,0.6,0.4,0.4])
print(ax)
ax.plot(x,y,"r",label="y=x")
ax2.plot(x,z,"b",label="z=(x-2)^3")
ax3.plot(x,w,"g",label="w=((x-3)(x-6))^2")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
グラフをファイルに書き出す
最後に、グラフをファイルに書き出す場合、fig.savefig
を使います。
実行しているpythonファイルと同じフォルダに作成されます。
例えば以下のように書きます。
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
x = np.linspace(0,10,21)
y = x
z = (x-2)**3
w = ((x-3)*(x-6))**2
fig,ax = plt.subplots(1,1,figsize=(6,4)) #図のサイズ指定
ax.plot(x,y,"r",label="y=x")
ax.plot(x,z,"b",label="z=(x-2)^3")
ax.plot(x,w,"g",label="w=((x-3)(x-6))^2")
ax.legend()
ax.set_title("three curves")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
fig.savefig("img.jpg") #グラフをファイルとして書き出す
img.jpgというファイルでグラフが書き出されます。
また、ファイルに保存する際、拡張子を指定することで任意のフォーマットで保存できます。
対応しているフォーマットは以下のとおりです。
eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff
pngやjpgだけでなく、論文などで使うtifやepsにも対応しているので便利ですね。
さあ、Pythonでグラフを描いてみよう!
今回はPythonでのグラフ描画方法をご紹介しました。
Matplotlibライブラリを使うことで簡単にグラフを描画することができます。
- Pythonのグラフの基本的な使い方
- Pythonで複数のグラフ描画
- Pythonでグラフの色や線・点の変更方法
ぜひ、色々と試してみてくださいね。
Kaggle(カグル)のタイタニックデータを可視化してみたので、こちらの記事もぜひ御覧ください。
次はKaggleにトライしてみよう!
コメント