matplotlib.pyplot.plotで折れ線グラフや数学のグラフを描画する方法

matplotlibで折れ線グラフ

折れ線グラフは matplotlib.pyplot.plot で描画できます。最も基本的なグラフの描画方法でよく使われます。

引数で描画するデータ(配列)を渡すのが基本的な使い方です。引数のデータがプロットされ線でつながれて折れ線グラフになります。

プロットされるデータが多いとなめらかな曲線も描画できます。たとえば2次関数のグラフです。

matplotlib.pyplot.plotの使い方

matplotlib.pyplot.plot(*args, **kwargs)

可変長引数 *args がプロットするデータです。**kwargs はスタイルを指定するための引数です。

プロットするデータの渡し方はかなり柔軟です。

引数が1つの場合

引数が1つの場合は、そのデータが縦軸の値としてプロットされます。横軸の値は0からの連番になります。

import numpy as np
from matplotlib import pyplot as plt

# プロットするデータ
data = np.array([1, 3, 4, 2, 6, 7, 5])

# プロットして描画
plt.plot(data)
plt.show()

引数が2つの場合

引数が2つの場合、横軸と縦軸の値の組み合わせとしてプロットされます。配列の要素数が異なるとプロットできないためエラーになります。

1つ目の引数が xdata 2つ目の引数が ydata です。例えば以下の例では、2次関数(y = x^2)を描画しています。

import numpy as np
from matplotlib import pyplot as plt

# 2次関数: y = x^2 (-10 < x < 10)
x = np.linspace(-10, 10)
y = x**2

# 縦軸横軸の値をプロット
plt.plot(x, y)
plt.show()

引数が3つ以上の場合は複数のグラフを描画

複数の xdata ydata を引数に指定することもできます。この場合、複数のグラフがまとめて描画されます。

import numpy as np
from matplotlib import pyplot as plt

# 2次関数: y = x^2
x1 = np.linspace(-5, 5)
y1 = x1**2

# 1次関数: y = x + 3
x2 = np.linspace(-5, 5)
y2 = x2 + 3

# 縦軸横軸の値をプロット
plt.plot(x1, y1, x2, y2)
plt.show()

Line Style の指定

スタイルの設定を引数で指定することが可能です。

プロットするデータだけを渡してグラフを描画すると、グラフのスタイルはデフォルトの設定が適用されます。スタイルの指定はかなり詳細に設定できます。40種類の引数から設定可能です。

数が多いのでいくつかピックアップしてまとめます。

引数 説明
alpha グラフの透過度を指定します。(0.0[透明]から1.0[不透明])
color または c 線の色を指定します。
drawstyle グラフの書き方を設定します。(‘default’, ‘steps’, ‘steps-pre’, ‘steps-mid’, ‘steps-post’)
fillstyle マーカーの塗りつぶし色を指定します。(‘full’, ‘left’, ‘right’, ‘bottom’, ‘top’, ‘none’)
label ラベルを文字列で指定します。
linestyle または ls 線のスタイルを指定します。[‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (offset, on-off-dash-seq) | ‘-‘ | ‘–‘ | ‘-.’ | ‘:’ | ‘None’ | ‘ ‘ | ”]
linewidth または lw 線の太さを指定します。
marker マーカーの種類を指定します。
markeredgecolor または mec マーカーの枠線線の色を指定します。
markeredgewidth または mew マーカーの枠線線の太さを指定します。
markerfacecolor または mfc マーカーの塗りつぶし色を指定します。
markersize または ms

線の色を指定

color で線の色を指定できます。省略して c でも指定できます。指定できる値と色は以下の通りです。

指定文字
‘b’ 青(blue)
‘g’ 緑(green)
‘r’ 赤(red)
‘c’ シアン(cyan)
‘m’ マゼンタ(magenta)
‘y’ 黄色(yellow)
‘k’
‘w’ 白(white)
import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(1, 10)
y = x**2

plt.plot(x, y, color="r")
plt.plot(x, y / 2, color="g")
plt.plot(x, y / 3, c="k")
plt.show()

グラフのスタイルを指定

drawstyle でグラフのスタイルを指定できます。’default’, ‘steps’, ‘steps-pre’, ‘steps-mid’, ‘steps-post’ から指定します。

defaultだと点と点の間を直線で結びます。要は普通のグラフですね。

steps*を指定すると階段関数のグラフとなります。pre mid postの違いは、どのタイミングで段差となるかです。

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(10)
y = 2*x

plt.plot(x, y, drawstyle="default") # 普通の直線グラフ
plt.plot(x, y*3, drawstyle="steps") # 階段状のグラフ

plt.show()

マーカーのスタイルを指定

プロットされた点をマーカーで表示することができます。

マーカーを表示

marker でマーカーを表示させることができます。指定する値はマーカーの種類です。

指定できる種類は以下のページにあまとめられています。

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(10)
y = 2*x

plt.plot(x, y, marker="o")
plt.plot(x, y*3, marker="x")

plt.show()

マーカーの大きさや色、塗りつぶし

  • markeredgecolor でマーカーの枠線の色を指定できます。
  • markeredgewidth でマーカーの枠線の太さを指定します。
  • markerfacecolor でマーカーの塗りつぶし色を指定します。
  • markersize でマーカーの大きさを指定します。

まとめて設定すると以下のような感じです。

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(10)
y = 2*x

plt.plot(x, y, 
    marker="o", 
    markeredgecolor="r", # 枠線は赤
    markeredgewidth=5,   # 枠線の太さ
    markerfacecolor="w", # マーカーの色
    markersize=15)

plt.show()

ラベルを表示

label でラベルを表示できます。ラベルを表示させるには引数の指定だけでなく、legend() を事項する必要があります。

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(10)
y = 2*x

plt.plot(x, y, label="test label")
plt.legend()

plt.show()

参考URL