はじめに
この実験では、Matplotlib のmpl_toolkits.axes_grid1.parasite_axes.HostAxesとmpl_toolkits.axes_grid1.parasite_axes.ParasiteAxesモジュールを使って寄生虫軸を作成する方法を学びます。寄生虫軸は、ホスト軸と x スケールを共有しますが、y 方向には異なるスケールを表示します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
まず、必要なライブラリをインポートする必要があります。この実験では、グラフ描画にmatplotlib.pyplotを、寄生虫軸を作成するためにmpl_toolkits.axes_grid1.parasite_axes.HostAxesとmpl_toolkits.axes_grid1.parasite_axes.ParasiteAxesを使用します。
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.parasite_axes import HostAxes
グラフを作成してホスト軸を追加する
plt.figure()メソッドを使ってグラフを作成し、fig.add_axes()メソッドを使ってホスト軸を追加します。ホスト軸は寄生虫軸と x スケールを共有します。
fig = plt.figure()
host = fig.add_axes([0.15, 0.1, 0.65, 0.8], axes_class=HostAxes)
寄生虫軸を作成する
host.get_aux_axes()メソッドを使って 2 つの寄生虫軸を作成します。viewlim_mode=Noneを設定して、寄生虫軸がホスト軸と同じ x スケールを共有することを確認します。また、sharex=hostを設定して、x スケールが共有されることを確認します。
par1 = host.get_aux_axes(viewlim_mode=None, sharex=host)
par2 = host.get_aux_axes(viewlim_mode=None, sharex=host)
ホスト軸の右側の y 軸を非表示にする
host.axis["right"].set_visible(False)メソッドを使って、ホスト軸の右側の y 軸を非表示にします。
host.axis["right"].set_visible(False)
寄生虫軸 1 の右側の y 軸を表示する
par1.axis["right"].set_visible(True)メソッドを使って、最初の寄生虫軸の右側の y 軸を表示します。また、右側の y 軸の目盛りラベルとラベルを表示するために、par1.axis["right"].major_ticklabels.set_visible(True)とpar1.axis["right"].label.set_visible(True)も設定します。
par1.axis["right"].set_visible(True)
par1.axis["right"].major_ticklabels.set_visible(True)
par1.axis["right"].label.set_visible(True)
寄生虫軸 2 に右側の y 軸を追加する
par2.axis["right2"] = par2.new_fixed_axis(loc="right", offset=(60, 0))メソッドを使って、2 番目の寄生虫軸に右側の y 軸を追加します。
par2.axis["right2"] = par2.new_fixed_axis(loc="right", offset=(60, 0))
すべての軸にデータをプロットする
plot()メソッドを使って、すべての軸にデータをプロットします。また、set()メソッドを使って、すべての軸のラベルと制限を設定します。
p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")
host.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
par1.set(ylim=(0, 4), ylabel="Temperature")
par2.set(ylim=(1, 65), ylabel="Velocity")
凡例と軸の色を追加する
host.legend()メソッドを使って、ホスト軸に凡例を追加します。また、host.axis["left"].label.set_color(p1.get_color())、par1.axis["right"].label.set_color(p2.get_color())、およびpar2.axis["right2"].label.set_color(p3.get_color())メソッドを使って、ホスト軸の左側の y 軸ラベル、最初の寄生虫軸の右側の y 軸ラベル、および 2 番目の寄生虫軸の右側の y 軸ラベルの色をそれぞれ対応する線の色と一致させます。
host.legend()
host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right2"].label.set_color(p3.get_color())
グラフを表示する
plt.show()メソッドを使ってグラフを表示します。
plt.show()
まとめ
この実験では、Matplotlib のmpl_toolkits.axes_grid1.parasite_axes.HostAxesとmpl_toolkits.axes_grid1.parasite_axes.ParasiteAxesモジュールを使って寄生虫軸を作成する方法を学びました。また、寄生虫軸にデータをプロットし、ホスト軸と x スケールを共有する方法も学びました。