次のスクリプトを使用して、2つのy軸と共通のx軸を持つ情報を表示しています。この後対話型ズームツールを使用してMatplotlibを使って軸の限界を再調整する(ホストプロットに追加)方法はありますか?
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
#creating a host plot with x and y axis
hostplot = host_subplot(111, axes_class=AA.Axes)
#creating a second y axis
extra_y_axis = hostplot.twinx()
extra_y_axis.set_navigate_mode(True)
extra_y_axis.set_navigate(True)
print extra_y_axis.can_zoom() #prints true on output
hostplot.set_xlabel("host_x")
hostplot.set_ylabel("host_y")
extra_y_axis.set_ylabel("extra_y")
hostplot.plot([0, 1, 2], [0, 1, 2])
extra_y_axis.plot([0, 1, 2], [0, 3, 2])
plt.draw()
plt.show()
以下に示すようにIは、左下にトレイから「ズーム矩形に」ツールを使用:
。
:
そして、私は次の出力を得ました。
両方の画像でy軸の目盛りに注意してください。ズーム機能はホストプロットで正しく機能していますが、extra_y_axisを再スケーリングすることはできず、一定のスケールを維持しています(2番目の軸を使用してプロットを拡大することはできません)。
どのようにすべての軸が小さな部分のズームで再スケーリングされるようにすることができますか?
おかげ
ありがとうございます!しかし、sxとsyを自動的に設定する方法はありませんか?通常、あなたが持つデータは不明です。あなたは手動で最大値と最小値をチェックし、それに応じてそれを設定すると思います。しかし、私はそれが図書館によって行われるべきであると思った。 – ornuthewolf
私はそれが私が記述した最初の方法を使用するのが最も簡単だと思うし、それでmatplotlibはそれを自分自身で処理します。私はツールキットの専門家ではありません(あなたの質問は初めて見ました)ので、ツールキットの軸をどのようにスケールするかについてはまだコメントできません。 – Tkanno
それは私が最終的にしたものです。私は実際にはmpl_toolkits.axes_grid1の機能を必要とせず、matplotlib.pyplotだけを使用して切り替えたことに気付きました。とにかく、助けてくれてありがとう! – ornuthewolf