https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.figure.html

Matplotlibでグラフを書いてみよう!

2022年5月12日

Matplotlibは覚えると便利、でも最初のハードルが結構高い!覚える事もたくさんある!だから何とか使えるようメモ書きします。

グラフ作成の基本

基本的なグラフの作成方法はこちらを参考にしてください。


色んなグラフを書いてみる

グラフにも色々な種類があります。それぞれのグラフの書き方を紹介していきます。

折れ線グラフ plot

書き方

plot( x軸の値, y軸の値 )

plot 詳細

【例】
import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 20, 40])
plt.plot(x, y)
【実行結果】

棒グラフ bar

書き方

bar( x軸の値, y軸の値 )

bar 詳細

【例】
import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([1, 2, 3, 4, 5])
height = np.array([100, 200, 300, 400, 500])
plt.bar(x,height)
【実行結果】

散布図 scatter

書き方

scatter( x, y, marker, s )

xx軸の値
yy軸の値
marker(オプション)マーカーの指定
※ドル記号により’$…$’のように囲むとTex表記となり、数式や文字列をマーカーに指定できる。
LaTexによる数式の書き方★インライン数式モード
s(オプション)マーカーの大きさ

matplotlib.pyplot.scatter 公式

【例】
import numpy as np
import matplotlib.pyplot as plt
 
x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y)
【実行結果】

ヒストグラム hist

書き方

hist( x, bins=", range=() )

x配列または数字
bins(オプション) ヒストグラムの本数を指定
配列または数字または文字列
例)bins=’auto’
range(オプション) グラフを表示するx軸の幅を指定
タプル(最小値,最大値)

hist 詳細

【例】
import numpy as np
import matplotlib.pyplot as plt
 
x = np.random.randn(1000)
 
plt.hist(x, bins='auto')
【実行結果】

箱ひげ図 boxplot

書き方

boxplot(x, labels=None)

x入力データ
labels(オプション)各データセットのラベル

matplotlib.pyplot.boxplot 公式

【例】
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
np.random.seed(0)
x1 = np.random.randint(0, 10, 50)
np.random.seed(1)
x2 = np.random.randint(0, 10, 50)
df = pd.DataFrame({'sun':x1,'mon':x2})

# matplotlibの箱ひげ図
plt.boxplot([df.sun,df.mon], labels=['sun','mon'])
【実行結果】

等高線 contour,contourf

contourは等高線を描きます。
contourfは等高線間を塗りつぶします。

書き方

contour( X, Y, Z, levels, colors, cmap )
contourf( X, Y, Z, levels, colors, cmap )

X(オプション) x座標
Y(オプション) y座標
Zz座標、等高を表す
levels(オプション) 等高線の数を決定
colors(オプション) 色を指定
cmap(オプション) カラーマップを指定
カラーマップの確認方法は dir(plt.cm)

contour 公式
contourf 公式

【例】contourを黒で描画
import matplotlib.pyplot as plt
import numpy as np

# ダミーデータ用関数の定義
def f(x, y):
    return np.sin(x) + np.cos(10 + y * x)

# ダミーデータ作成
x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 40)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
plt.contour(X,Y,Z, colors='black')
【実行結果】
【例】contourにカラーマップRdGy(Red-Gray)を指定
plt.contour(X,Y,Z,levels=20, cmap='RdGy')
# カラーバーの表示
plt.colorbar()
【実行結果】
【例】contourfにカラーマップRdGy(Red-Gray)を指定
plt.contourf(X,Y,Z,20, cmap='RdGy')
# カラーバーの表示
plt.colorbar()
【実行結果】

グラフの各種設定

legend 凡例の表示

グラフの中に凡例を表示します。

書き方

legend( handles, labels )

handles (オプション)ハンドルを指定
labels (オプション)ラベルを指定

legend 詳細

【例】plotでラベルを指定した場合
import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 20, 40])
plt.plot(x, y, label='line graph A')
 
plt.legend()
plt.show()
【実行結果】
【例】legendでラベルを指定した場合
import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 20, 40])
plt.plot(x, y)
 
plt.legend(['line graph B'])
plt.show()
【実行結果】
【例】legendでハンドルとラベルを指定した場合
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-5, 5, 20)
y1 = x
y2 = x ** 2
 
fig, ax = plt.subplots()
 
# カンマに注意
graph1, = ax.plot(x,y1)
(graph2,) = ax.plot(x,y2)
 
ax.legend( [graph1,graph2],["A","B"] )
# または ax.legend( (graph1,graph2),("A","B") )
plt.show()
【実行結果】

title xlabel ylabel タイトル・x軸y軸のラベル表示

タイトル・x軸・y軸のラベルをそれぞれ表示します。

書き方

title( タイトル名 )
xlabel( ラベル名 )
ylabel( ラベル名 )

【例】
import matplotlib.pylab as plt
  
plt.title("The Title")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.show()
【実行結果】

ylim xlim y軸x軸の幅

y軸、x軸の幅を設定します。

書き方

ylim( bottom(下限), top(上限) )
xlim( left(左限), right(右限) )

【例】
import matplotlib.pylab as plt
 
plt.ylim( -2, 1.1 )
plt.xlim( -1.0, 1.5 )
plt.show()
【実行結果】

Matplotlib

Posted by Bright_Noah