matplotlib.pyplot使い方まとめ(随時更新中)

目次

使用するmoduleのインポート

import numpy as np

import matplotlib.pyplot as plt
%% matplotlib inline

図のレイアウト

データの用意

x = np.random.normal(50, 10, 1000) #平均値50,標準偏差10,サンプル数1000でガウス分布を作成
y = np.random.normal(50, 10, 1000)

図のサイズの変更

plt.figure(figsize=(5,5))  #デフォルトでは6.4*4.8
plt.scatter(x, y)
plt.show()

f:id:slimelimes:20190923210822p:plain
デフォルトサイズ(比較用)

f:id:slimelimes:20190923210849p:plain
figsize=(5,5)

タイトル、X軸の名前、Y軸の名前をつける

それぞれ、plt.title("タイトル名")、plt.xlabel("X軸の名前")、plt.ylabel("Y軸の名前")の指定できます。

plt.figure(figsize=(5,5)) #図の大きさを変更
plt.scatter(x,y)
plt.title("Normal Distribution")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

f:id:slimelimes:20190925124052p:plain

x軸,y軸の範囲の設定

plt.xlim(Xの最小値, Xの最大値)
plt.ylim(Yの最小値, Yの最大値)

色の変更

cオプションを指定します。 引数として、以下のstring型の文字が取れます。色名の代わりに省略コードで指定することもできます。

省略コード 色名
'b' blue
'g' green
'r' red
'c' cyan
'm' magenta
'y' yellow
'k' black
'w' white


plt.scatter(x, y, c="red")
plt.show()

f:id:slimelimes:20190924113007p:plain

透過率の変更

alphaオプションを使います。0から1の値を指定します。0に近いほど透明になります。

plt.scatter(x, y, alpha=0.3)
plt.savefig("changealpha.png")
plt.show()

f:id:slimelimes:20190924181011p:plain

図の保存

plt.savefig(ファイル名)でできます。plt.show()より前に実行しないとうまく保存されないことに注意してください。

plt.plot(x, y)
plt.savefig("picture.png") #picture.pngという名前のPNGファイルが現在いるディレクトリに保存されます。
plt.show()  #plt.savefigとの順番に注意

グラフの作成

plt.plot(x, y)  #x and y are array-like
plt.show()

標準偏差を表示

pltのerrorbarメソッドを使います。メソッドのデフォルトの設定では、エラーバーが縦棒となっているので、「工」の形にするために capthick, capsizeのオプション を 0 以上の値に指定しておく必要があります。

plt.plot(label,mean)
plt.errorbar(label,mean,std,capsize=10,capthick=1)  ##stdのところには、標準偏差あるいは誤差を入力します。
plt.title("mean+errorbar")
plt.xlabel("category")
plt.ylabel("number of people")
plt.show()

ヒストグラムの作成

plt.hist(X,bins=10)
plt.show()

散布図の作成

基本

# データの用意
#平均値50,標準偏差10,サンプル数1000でガウス分布を作成
x = np.random.normal(50, 10, 1000) 
y = np.random.normal(50, 10, 1000)

plt.scatter(x, y)
plt.show()

f:id:slimelimes:20190923210849p:plain

複数の系列を重ねて散布図にする場合

plt.scatterを繰り返せば大丈夫です。散布図の色はデフォルトでは青色になっているため、系列ごとに色を変えましょう。

# データの用意
x1 = np.random.normal(100, 10, 1000)
y1 = np.random.normal(50, 10, 1000)
x2 = np.random.normal(0, 10, 1000)
y2 = np.random.normal(50, 10, 1000)
x3 = np.random.normal(50, 10, 1000)
y3 = np.random.normal(100, 10, 1000)
x4 = np.random.normal(50, 10, 1000)
y4 = np.random.normal(0, 10, 1000)

#散布図の作成

plt.figure(figsize=(5,5)) #図の大きさを設定

plt.scatter(x1, y1, c="red")
plt.scatter(x2, y2, c="blue")
plt.scatter(x3, y3, c="yellow")
plt.scatter(x4, y4, c="green")

plt.show()

f:id:slimelimes:20190924175004p:plain

凡例を載せる方法

plt.scatterのlabelオプションで系列の名前を指定し、plt.legend()で凡例を表示します。locオプションで凡例を表示する位置を指定することができます。

# データの用意
x1 = np.random.normal(10, 10, 1000)
y1 = np.random.normal(0, 10, 1000)
x2 = np.random.normal(-10, 10, 1000)
y2 = np.random.normal(0, 10, 1000)

plt.figure(figsize=(5,5)) #図の大きさを設定

plt.scatter(x1, y1, c="red", alpha=0.3, label="A")
plt.scatter(x2, y2, c="blue", alpha=0.3, label="B")

plt.legend(loc='upper left')
#locとして以下が選べます。
# upper right,upper left,lower left,lower right,right,center 
#left,center right,lower center,upper center,center

plt.show()

f:id:slimelimes:20190925120618p:plain

オプション

  • fontsize = int 凡例のフォントの大きさ
  • frameon = True/False 判例に枠をつけるかどうか。