Pynote

Python、機械学習、画像処理について

matplotlib - 折れ線グラフを作成する。

1つの Axes に2つの折れ線グラフを作成する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, axes = plt.subplots(figsize=(4, 4))
axes.plot(x, y1)
axes.plot(x, y2)

plt.show()


線の幅を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 100)
y = np.sin(x)

# 折れ線グラフを作成する。
fig, [axes1, axes2, axes3] = plt.subplots(1, 3, figsize=(9, 3))
axes1.plot(x, y, linewidth=0.5)  # 0.5 pt
axes2.plot(x, y, linewidth=1.0)  # 1.0 pt
axes3.plot(x, y, linewidth=2.0)  # 2.0 pt

plt.show()


線のカスタマイズ

線の色を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 100)
y = np.sin(x)

# 折れ線グラフを作成する。
fig, [axes1, axes2, axes3] = plt.subplots(1, 3, figsize=(9, 3))
axes1.plot(x, y, color='red')
axes2.plot(x, y, color='blue')
axes3.plot(x, y, color='green')

plt.show()


ダッシュ線の空白の間隔を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 100)
y = np.sin(x)

# 折れ線グラフを作成する。
fig, [axes1, axes2, axes3] = plt.subplots(1, 3, figsize=(9, 3))
axes1.plot(x, y, ls='--', dashes=[2, 1])  # 2pt line, 1pt break
axes2.plot(x, y, ls='--', dashes=[2, 2, 10, 2])  # 2pt line, 2pt break, 10pt line, 2pt break
axes3.plot(x, y, ls='--', dashes=[2, 1, 2, 4])  # 2pt line, 1pt break, 2pt line, 4pt break

plt.show()


点同士の結び方を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 5)
y = np.arange(0, 5)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = ['default', 'steps', 'steps-pre', 'steps-mid', 'steps-post']

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, drawstyle=param)
    axes.set_title("drawstyle='{}'".format(param))

plt.show()


点のカスタマイズ

点の塗りつぶし方を指定する。

  • full: markerfacecolor で塗りつぶす。
  • left: 左側を markerfacecolor、右側を markerfacecoloralt で塗りつぶす。
  • right: 右側を markerfacecolor、左側を markerfacecoloralt で塗りつぶす。
  • bottom: 下側を markerfacecolor、上側を markerfacecoloralt で塗りつぶす。
  • top: 上側を markerfacecolor、下側を markerfacecoloralt で塗りつぶす。
  • none: markerfacecolor で塗りつぶす。
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 3)
y = np.arange(0, 3)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = ['full', 'left', 'right', 'bottom', 'top', 'none']

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, marker='o', fillstyle=param, markersize=12,
              markerfacecolor='red', markerfacecoloralt='pink')
    axes.set_title("drawstyle='{}'".format(param))

plt.show()


線のスタイルを設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 30)
y = np.sin(x)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = ['solid', 'dashed', 'dashdot', 'dotted']

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, linestyle=param)
    axes.set_title("linestyle='{}'".format(param))

plt.show()

'-', '--', '-.', ':' も同じ意味を持つ。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 30)
y = np.sin(x)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = ['-', '--', '-.', ':']

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, linestyle=param)
    axes.set_title("linestyle='{}'".format(param))

plt.show()


点のスタイルを設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
params = [['.', 'point'],
          [',', 'pixel'],
          ['o', 'circle']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

params = [['v', 'triangle_down'],
          ['^', 'triangle_up'],
          ['<', 'triangle_left'],
          ['>', 'triangle_right']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

params = [['1', 'tri_down'],
          ['2', 'tri_up'],
          ['3', 'tri_left'],
          ['4', 'tri_right']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

params = [['8', 'octagon'],
          ['s', 'square'],
          ['p', 'pentagon'],
          ['*', 'star'],
          ['h', 'hexagon1'],
          ['H', 'hexagon2']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

params = [['P', 'plus (filled)'],
          ['+', 'plus'],
          ['x', 'x'],
          ['X', 'x (filled)']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

params = [['D', 'diamond'],
          ['d', 'thin_diamond'],
          ['|', 'vline'],
          ['_', 'hline']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 5))
fig.subplots_adjust(hspace=0.4)

from matplotlib.markers import TICKLEFT, TICKRIGHT, TICKUP, TICKDOWN
params = [[TICKLEFT, 'tickleft'],
          [TICKRIGHT, 'tickright'],
          [TICKUP, 'tickup'],
          [TICKDOWN, 'tickdown']]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

fig = plt.figure(figsize=(9, 10))
fig.subplots_adjust(wspace=0.4)
fig.subplots_adjust(hspace=0.4)

from matplotlib.markers import (CARETLEFT, CARETRIGHT, CARETUP, CARETDOWN,
                                CARETLEFTBASE, CARETRIGHTBASE, CARETUPBASE, CARETDOWNBASE)
params = [[CARETLEFT, 'caretleft (centered at tip)'],
          [CARETRIGHT, 'caretright (centered at tip)'],
          [CARETUP, 'caretup (centered at tip)'],
          [CARETDOWN, 'caretdown (centered at tip)'],
          [CARETLEFTBASE, 'caretleft (centered at base)'],
          [CARETRIGHTBASE, 'caretright (centered at base)'],
          [CARETUPBASE, 'caretup (centered at base)'],
          [CARETDOWNBASE, 'caretdown (centered at base)']]

for i, param in enumerate(params):
    axes = fig.add_subplot(4, 2, i + 1)

    marker, description = param
    axes.plot(x, y, marker=marker, markersize=12)
    axes.set_title("marker='{}' ({})".format(marker, description))

plt.show()


点の色、端の色、幅を変更する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 10)
y = np.sin(x)

# 折れ線グラフを作成する。
fig, axes = plt.subplots(figsize=(4, 4))
# マーカーの端の色を緑、マーカーの端の幅を 2px、マーカーの色をピンクにする。
axes.plot(x, y, marker='o',
          markeredgecolor='g', markeredgewidth='2', markerfacecolor='pink')

plt.show()


点の大きさを変更する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 30)
y = np.sin(x)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = [1, 2, 4, 8]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, marker='o', markersize=param)
    axes.set_title("markersizes='{}'".format(param))

plt.show()


点を配置する間隔を設定する。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 2, 30)
y = np.sin(x)

# 折れ線グラフを作成する。
fig = plt.figure(figsize=(9, 6))
params = [1, 2, 4, 8]

for i, param in enumerate(params):
    axes = fig.add_subplot(2, 3, i + 1)

    axes.plot(x, y, marker='o', markevery=param)
    axes.set_title("markeevery='{}'".format(param))

plt.show()