7

matplotlibの図をプロットするための次のPythonコードを検討してください。

import matplotlib.pylab as pp
import numpy as np

alpha = np.linspace(0, 2 * np.pi, 400)
sig1 = np.sin(alpha)
sig2 = np.sin(2 * alpha) + 2 * (alpha > np.pi)

ax1 = pp.subplot(111)
ax2 = ax1.twinx()

ax1.plot(alpha, sig1, color='b')
ax2.plot(alpha, sig2, color='r')
ax1.set_ylabel('sig1 value', color='b')
ax2.set_ylabel('sig2 value', color='r')
pp.grid()
pp.show()

素敵な筋書きをくれ

ここに画像の説明を入力してください

パン/ズームの軸の1つを無効にする方法を知りたいので、パン/ズームツールを使用すると、たとえばax2のみが再スケーリングされます。これを行う方法はありますか?プログラムでやりたいです。

4

2 に答える 2

7

あなたはこれを使用して行うことができますax2.set_navigate(False)

from matplotlib.pyplot import *
import numpy as np

fig,ax1 = subplots(1,1)
ax2 = ax1.twinx()
ax2.set_navigate(False)
x = np.linspace(0,2*np.pi,100)
ax1.plot(x,np.sin(x),'b')
ax1.set_xlabel('Scaleable axis')
ax1.set_ylabel('Scaleable axis')
ax2.plot(x,np.sin(x+1),'r')
ax2.set_ylabel('Static axis',weight='bold')
于 2013-03-28T23:46:44.223 に答える
0

2つのプロット領域と3つの垂直軸を持つもう少し複雑な例。下のサブプロットの共通の水平軸と左側の垂直軸のみがインタラクティブです。

fig, ax_left = plt.subplots()
ax_right = ax_left.twinx()
ax_status = make_axes_locatable(ax_left).append_axes('top', size=1.2, pad=0., sharex=ax_left)
ax_status.xaxis.set_tick_params(labelbottom=False)
ax_right.set_navigate(False)
ax_status.set_navigate(False)

ali_mの回答に従って追加する前set_navigate(False)は、下のプロットの2つの垂直軸は両方とも、下のプロットでマウスを垂直にドラッグすることによって影響を受けましたが、ステータス軸は本来の影響を受けませんでした、最初のマウスジェスチャーの後でのみ影響を受けました。初めてマウスをドラッグすると、すべての軸が影響を受けます。これはmatplotlibのバグのようで、#12613として報告されています。

于 2018-10-24T11:24:45.627 に答える