プログラミング

【Matplotlib】Python(パイソン)でグラフ描画!範囲指定や線や点の変更は?

Pythonグラフ描画ってどうするの?範囲指定は?(Matplotlib)

「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グラフ描画例

前回は、Pythonの行列演算Numpyを学びました。

関連記事【NumPy】Python(パイソン)で行列計算!配列関数の使い方を紹介

今回は、Pythonにおけるグラフ描画ライブラリ、Matplotlibの使い方を学びましょう!

  • Pythonのグラフの基本的な使い方
  • Pythonで複数のグラフ描画
  • Pythonでグラフの色や線・点の変更方法

以下、Jupyter notebookを使って実際にPythonのコードを書いていきます。

まだPythonの環境を構築していない方はこちらの記事をお読みください。

関連記事Python(パイソン)環境をAnaconda(アナコンダ)で構築!Jupyter notebookの使い方は?

Pythonグラフ描画の基本(Matplotlib)

Pythonのグラフ描画ライブラリ、Matplotlibを使います。

Anacondaの一環として集力されているので、Anacondaを使っている方は新たにインストールは不要です。

Anaconda起動画面
【Anaconda】Python(パイソン)環境構築!Jupyter notebook(ジュピターノートブック)の使い方は?「Pythonの環境構築をしたい!」 「Jupyter notebook(ジュピターノートブック)ってどう使うの?」 機械学...

基本的には以下のコマンドを入力するだけでPythonでグラフが描画できます。

import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[0,6,12,24,48])
Pythonグラフ描画基本
  • 「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ライブラリの使い方はこちらの記事を御覧ください。

NumPyで出来ることは?使い方を解説!(Pythonライブラリ)
【NumPy】Python(パイソン)で行列計算!配列関数の使い方を紹介「Python(パイソン)で行列計算がしたい!」 「NumPy(ナムパイ)の基本的な使い方は?」 Pythonのライ...

各グラフの色や線、点の種類などが変更可能です。

plt.plot(x,y,"r-o",x,z,"b--^",x,w,"g:s")
Python描画で色や線や点の変更

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(カグル)】Pythonでタイタニックのデータの前処理と可視化してみた!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です