matplotlib – 折れ線のプロパティについて

目次

概要

本記事では、matplotlib で折れ線を表す lines.Line2D オブジェクトのプロパティについて、解説します。 axes.Axes.plot() などの関数の引数に指定することで、線の色や太さなどを設定できます。

lines.Line2D

lines.Line2D オブジェクトは matplotlib で折れ線を表すオブジェクトです。 通常、直接このオブジェクトを作成することはなく、折れ線を作成する axes.Axes.plot() などの関数の返り値として得られます。

In [1]:
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, ax = plt.subplots()
lines = ax.plot(x, y1, "-", x, y2, "--")
print(lines)

plt.show()
[<matplotlib.lines.Line2D object at 0x7f528453b750>, <matplotlib.lines.Line2D object at 0x7f528c2c4c50>]

Line2D オブジェクトのプロパティ

Line2D オブジェクトの多くのプロパティがあり、線の色や太さなどを設定できます。

Line2D オブジェクトのプロパティを設定するには、次の方法があります。

  • Line2D オブジェクトの setter 関数を呼び出す: すでに作成済みの Line2D オブジェクトのプロパティを変更する場合は、Line2D.set_<プロパティ名>(<設定値>) で設定します。(例: 色を赤にする場合、line.set_color(“red”))
  • 折れ線を作成する関数に <プロパティ名>=<設定値> という形で引数を指定することで、作成される折れ線にその設定が反映されます。(例: plt.plot(x, y, color=”red”)

一部のプロパティ名は省略名があります。その場合、以下の表の名前の欄にスラッシュで区切って併記しています。 例えば、色を設定するプロパティ colorc でも同じ意味になります。(例: plt.plot(x, y, c=”red”))

名前 値を取得する関数 値を設定する関数 概要
alpha get_alpha() set_alpha() 透過度
antialiased / aa get_antialiased()
get_aa()
set_antialiased()
set_aa()
アンチエイリアスを有効にするかどうか
linestyle / ls get_linestyle()
get_ls()
set_linestyle()
set_ls()
線のスタイル
dashes set_dashes() 点線のスタイル
solid_capstyle get_solid_capstyle() set_solid_capstyle() 実線の場合の線分の端のスタイル
solid_joinstyle get_solid_joinstyle() set_solid_joinstyle() 実線の場合の線分の結合部分のスタイル
dash_capstyle get_dash_capstyle() set_dash_capstyle() 点線の場合の線分の端のスタイル
dash_joinstyle get_dash_joinstyle() set_dash_joinstyle() 点線の場合の線分の結合部分のスタイル
linewidth / lw get_linewidth()
get_lw()
set_linewidth()
set_lw()
線の太さ
color / c get_color()
get_c()
set_color()
set_c()
線の色
drawstyle / ds get_drawstyle()
get_ds()
set_drawstyle()
set_ds()
点同士の結び方
marker get_marker() set_marker() マーカーのスタイル
fillstyle get_fillstyle() set_fillstyle() マーカーの塗りつぶし方
markersize / ms get_markersize()
get_ms()
set_markersize()
set_ms()
マーカーの大きさ
markeredgewidth / mew get_markeredgewidth()
get_mew()
set_markeredgewidth()
set_mew()
マーカーの境界線の太さ
markeredgecolor / mec get_markeredgecolor()
get_mec()
set_markeredgecolor()
set_mec()
マーカーの境界線の色
markerfacecolor / mfc get_markerfacecolor()
get_mfc()
set_markerfacecolor()
set_mfc()
マーカーの内部の色
markerfacecoloralt / mfcalt get_markerfacecoloralt()
get_mfcalt()
set_markerfacecoloralt()
set_mfcalt()
マーカーの内部の色
markevery get_markevery() set_markevery() マーカーの配置間隔

alpha – 透過度を設定する

alpha に $[0, 1]$ の範囲の float を指定することで、線やマーカーの透過度を設定できます。 None を指定した場合、透過なしになります。

In [2]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
ax.plot(x, y, alpha=0.5)

plt.show()

antialiased / aa – アンチエイリアスを有効にするかどうかを設定する

antialiased または aa に bool を指定することで、アンチエイリアスを有効にするかどうかを設定できます。 antialiased=False にすると、アンチエイリアスが無効になり、ジャギーが目立つようになります。

In [3]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
ax.plot(x, y, antialiased=False)

plt.show()

linestyle / ls – 線のスタイルを設定する

linestyle または ls で、線のスタイルを設定できます。

文字列で指定する場合、以下の種類が指定できます。

In [4]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
line_props = {"linestyle": "--", "linewidth": 3, "color": "#1f77b4"}
ax.plot(x, y, **line_props)

plt.show()

点線にする場合、linestyle=(offset, onoffseq) という書式で指定することで、点線のスタイルをカスタマイズできます。

onoffseq は長さが偶数である float の配列で、(線の長さ, 空白の長さ, ...) を指定します。 例えば、(0, (3, 4, 1, 4)) の場合、線 (長さ3), 空白 (長さ4), 線 (長さ1), 空白 (長さ4) を繰り返すことで、点線を作成します。

offset は、最初に線を描画し始めるオフセットを指定します。 例えば、(7, (3, 4, 1, 4)) の場合、線 (長さ1), 空白 (長さ4) から始まり、以降は 線 (長さ3), 空白 (長さ4), 線 (長さ1), 空白 (長さ4) を繰り返します。

以下にいくつかの折れ線の例を載せました。

In [5]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
line_props = {"linestyle": (0, (3, 4, 1, 4)), "linewidth": 3, "color": "#1f77b4"}
ax.plot(x, y, **line_props)

plt.show()

solid_capstyle / dash_capstyle – 線分の端のスタイルを設定する

solid_capstyle で、実線、dash_capstyle で点線の場合の線分の端のスタイルを設定できます。 通常、折れ線は細いので、どれを設定しても視覚的な違いはほとんどありません。

solid_joinstyle / dash_joinstyle – 線分の結合部分のスタイルを設定する。

solid_joinstyle で、実線、dash_joinstyle で点線の場合の線分の結合部分のスタイルを設定できます。 通常、折れ線は細いので、どれを設定しても視覚的な違いはほとんどありません。

linewidth / lw – 線の太さを設定する

linewidth または lw に float を指定することで、線の太さを設定できます。

In [6]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
line_props = {"linestyle": "--", "linewidth": 5, "color": "#1f77b4"}
ax.plot(x, y, **line_props)

plt.show()

color / c – 線の色を設定する

color または c に色を指定することで、線の色を設定できます。

In [7]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
line_props = {"linestyle": "-", "linewidth": 3, "color": "red"}
ax.plot(x, y, **line_props)

plt.show()

drawstyle / ds – 点同士の結び方を設定する

drawstyle または ds に以下の文字列を指定することで、点同士の結び方を設定できます。

  • default: 各点同士を直接結びます。
  • steps / step-pre: 各点の直後に段差をつけます。
  • step-mid: 各点の中間に段差をつけます。
  • step-post: 各点の直前に段差をつけます。

通常、折れ線を作成する場合は、デフォルトである default のままで問題ないですが、階段関数 を描画したい場合などにこのプロパティを指定します。

marker – マーカーのスタイルを設定する

marker に値を指定することで、マーカーのスタイルを設定できます。

画像名前
“.”point
“,”pixel
“o”circle
“v”triangle_down
“^”triangle_up
“<“triangle_left
“>”triangle_right
“1”tri_down
“2”tri_up
“3”tri_left
“4”tri_right
“8”octagon
“s”square
“p”pentagon
“P”plus(filled)
“*”star
“h”hexagon1
“H”hexagon2
“+”plus
“x”x
“X”x(filled)
“D”diamond
“d”thin_diamond
“|”vline
“_”hline
0 or markers.TICKLEFTtickleft
1 or markers.TICKRIGHTtickright
2 or markers.TICKUPtickup
3 or markers.TICKDOWNtickdown
4 or markers.CARETLEFTcaretleft
5 or markers.CARETRIGHTcaretright
6 or markers.CARETUPcaretup
7 or markers.CARETDOWNcaretdown
8 or markers.CARETLEFTBASEcaretleft (centered at base)
9 or markers.CARETRIGHTBASEcaretright (centered at base)
10 or markers.CARETUPBASEcaretup (centered at base)
11 or markers.CARETDOWNBASEcaretdown (centered at base)
“None” or ” ” or “”nothing

latex をマーカーに使えます。

3つのタプルを指定した場合、以下の意味になります。

  • (n, 0, 回転角度): 正 $n$ 角形
  • (n, 1, 回転角度): 星型 $n$ 角形
  • (n, 2, 回転角度): $n$ 本の放射線から成るアスタリスク

ポリゴンの座標を表す (N, 2) の配列を指定することで、オリジナルの図形をマーカーに指定できます。

In [8]:
import matplotlib.pyplot as plt
import numpy as np

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


def create_marker():
    """ハートを表すポリゴンの座標を作成する。
    """
    t = np.linspace(0, 2 * np.pi, 20)
    x = 16 * np.sin(t) ** 3
    y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)

    return np.column_stack((x, y))


custom_merker = create_marker()

fig, ax = plt.subplots()
marker_props = {
    "marker": custom_merker,
    "markersize": 20,
    "markerfacecolor": "red",
}
ax.plot(x, y, "-o", **marker_props)

plt.show()

fillstyle – マーカーの塗りつぶし方を設定する

fillstyle に以下の文字列を指定することで、マーカーの塗りつぶし方を設定できます。

In [9]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "fillstyle": "left",
    "markersize": 15,
    "markerfacecolor": "#1f77b4",
}
ax.plot(x, y, "o-", **marker_props)

plt.show()

markersize / ms – マーカーの大きさを設定する

markersize または ms に float を指定することで、マーカーの大きさを設定できます。

In [10]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "markersize": 10,
}
ax.plot(x, y, "o-", **marker_props)

plt.show()

markeredgewidth / mew – マーカーの境界線の太さを設定する

markeredgewidth または mew で、マーカーの境界線の太さを設定できます。

In [11]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "markersize": 10,
    "markeredgewidth": 2.0,
    "markeredgecolor": "red",
    "markerfacecolor": "white",
}
ax.plot(x, y, "o-", **marker_props)

plt.show()

markeredgecolor / mec – マーカーの境界線の色を設定する

markeredgecolor または mec で、 マーカーの境界線の色を設定できます。

In [12]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "markersize": 10,
    "markeredgewidth": 2.0,
    "markeredgecolor": "green",
    "markerfacecolor": "white",
}
ax.plot(x, y, "-o", **marker_props)

plt.show()

markerfacecolor / mfc – マーカーの内部の色を設定する

markerfacecolor または mfc で、マーカーの内部の色を設定できます。

In [13]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "markersize": 10,
    "markeredgewidth": 2.0,
    "markeredgecolor": "green",
    "markerfacecolor": "white",
}
ax.plot(x, y, "-o", **marker_props)

plt.show()

markerfacecoloralt – マーカーの内部の色を設定する

markerfacecoloralt で、fillstylefull 以外を指定した場合に、マーカーの内部の塗りつぶさない部分の色を指定します。

In [14]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
marker_props = {
    "fillstyle": "top",
    "markersize": 15,
    "markerfacecolor": "white",
    "markerfacecoloralt": "black",
}
ax.plot(x, y, "-o", **marker_props)

plt.show()

markevery – マーカーの配置間隔を設定する

markevery で、マーカーの配置間隔を設定できます。

In [15]:
import matplotlib.pyplot as plt
import numpy as np

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

fig, ax = plt.subplots()
ax.plot(x, y, "-o", markevery=3)

plt.show()

コメント

コメントする

目次