はじめに
このチュートリアルでは、Matplotlib におけるアーティストの描画順序と、zorder 属性を使って順序を調整する方法について学びます。また、個々のアーティストの順序を変更する方法と、異なる種類のアーティストに対する zorder のデフォルト値についても探ります。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
zorder を理解する
Matplotlib における zorder 属性は、浮動小数点数であり、アーティストの描画順序を決定します。zorder が高いアーティストは、zorder が低いアーティストの上に描画されます。zorder のデフォルト値は、アーティストの種類によって異なります。たとえば、画像はデフォルトの zorder が 0 であり、パッチはデフォルトの zorder が 1 です。
zorder の変更
アーティストの描画順序を変更するには、アーティストを作成する際に zorder パラメータを使用して、その zorder 属性を明示的に設定することができます。たとえば、散布図で点を線の上に移動させるには、点の zorder を線の zorder よりも高い値に設定します。
import matplotlib.pyplot as plt
import numpy as np
r = np.linspace(0.3, 1, 30)
theta = np.linspace(0, 4*np.pi, 30)
x = r * np.sin(theta)
y = r * np.cos(theta)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))
ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')
ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5) ## move dots on top of line
ax2.set_title('Dots on top of lines')
plt.tight_layout()
plt.show()
目盛りとグリッド線の zorder の設定
目盛りとグリッド線の zorder を設定するには、set_axisbelow() メソッドまたは axes.axisbelow パラメータを使用します。
ax = plt.axes()
ax.plot([1, 2, 3], [2, 4, 3])
ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')
要素のカスタム順序
要素の zorder をカスタム順序で設定することもできます。たとえば、凡例の zorder を 2 本の線の間に設定することができます。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2) ## bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3', zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5) ## legend between blue and orange line
plt.show()
まとめ
このチュートリアルでは、Matplotlib における zorder 属性と、アーティストの描画順序を変更する方法について学びました。また、目盛りとグリッド線の zorder を設定する方法と、要素のカスタム順序を作成する方法についても検討しました。重なり合う要素を持つ複雑なビジュアライゼーションを作成する際には、zorder を理解することが不可欠です。