Matplotlib Python でのラインスタイル
Suraj Joshi
2024年2月15日
このチュートリアルでは、matplotlib.pyplot.plot()
メソッドの linestyle
パラメータの適切な値を設定することで、Matplotlib のプロットで異なる線種を使用する方法に焦点を当てます。利用可能な linestyle
オプションはたくさんあります。
Python Matplotlib でラインスタイルを設定する
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("sinx")
plt.title("Sinx Function")
plt.show()
出力:
これは sinx
関数のプロットをデフォルトの solid
線のスタイルで生成します。
linestyle
パラメータの選択肢を確認するには、以下のスクリプトを実行します。
from matplotlib import lines
print(lines.lineStyles.keys())
出力:
dict_keys(['-', '--', '-.', ':', 'None', ' ', ''])
任意の出力値を使用して、プロットの線のスタイルを変更できます。
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)
plt.plot(x, y, linestyle="-.")
plt.xlabel("x")
plt.ylabel("sinx")
plt.title("Sinx Function")
plt.show()
出力:
プロットの線のスタイルを -.
に設定します。
Matplotlib Linestyle
のドキュメントには、線スタイルをより洗練された形で制御するための辞書が用意されています。ドキュメントによると、(offset, (on_off_seq))
タプルを用いて線のスタイルを設定することができます。
import math
import numpy as np
import matplotlib.pyplot as plt
from collections import OrderedDict
linestyles_dict = OrderedDict(
[
("solid", (0, ())),
("loosely dotted", (0, (1, 10))),
("dotted", (0, (1, 5))),
("densely dotted", (0, (1, 1))),
("loosely dashed", (0, (5, 10))),
("dashed", (0, (5, 5))),
("densely dashed", (0, (5, 1))),
("loosely dashdotted", (0, (3, 10, 1, 10))),
("dashdotted", (0, (3, 5, 1, 5))),
("densely dashdotted", (0, (3, 1, 1, 1))),
("loosely dashdotdotted", (0, (3, 10, 1, 10, 1, 10))),
("dashdotdotted", (0, (3, 5, 1, 5, 1, 5))),
("densely dashdotdotted", (0, (3, 1, 1, 1, 1, 1))),
]
)
x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)
plt.plot(x, y, linestyle=linestyles_dict["loosely dashdotdotted"])
plt.xlabel("x")
plt.ylabel("sinx")
plt.title("Sinx Function")
plt.show()
出力:
linestyles_dict
辞書を用いて linestyle
を設定します。ラインスタイルを設定したいキーを選択し、そのキーの値を linestyles_dict
辞書の linestyle
パラメータとして plot()
メソッドに渡すことができます。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn