我認爲用戶輸入數字進行縮放並不是很方便。更爲標準的方式是由各種matplotlib tools提供的鼠標交互。
有用於在不同的情節變焦沒有標準的工具,但是我們可以很容易地提供與顯示在下面的代碼使用matplotlib.widgets.RectangleSelector
此功能。
我們需要在兩個子圖中繪製相同的數據,並將RectangleSelector連接到其中一個子圖(ax)。每次進行選擇時,第一個子圖中的選擇的數據座標都被簡單地用作第二個子圖的軸限制,有效地證明放大(或放大)功能。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import RectangleSelector
def onselect(eclick, erelease):
#http://matplotlib.org/api/widgets_api.html
xlim = np.sort(np.array([erelease.xdata,eclick.xdata ]))
ylim = np.sort(np.array([erelease.ydata,eclick.ydata ]))
ax2.set_xlim(xlim)
ax2.set_ylim(ylim)
def toggle_selector(event):
# press escape to return to non-zoomed plot
if event.key in ['escape'] and toggle_selector.RS.active:
ax2.set_xlim(ax.get_xlim())
ax2.set_ylim(ax.get_ylim())
x = np.arange(100)/(100.)*7.*np.pi
y = np.sin(x)**2
fig = plt.figure()
ax = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
#plot identical data in both axes
ax.plot(x,y, lw=2)
ax.plot([5,14,21],[.3,.6,.1], marker="s", color="red", ls="none")
ax2.plot(x,y, lw=2)
ax2.plot([5,14,21],[.3,.6,.1], marker="s", color="red", ls="none")
ax.set_title("Select region with your mouse.\nPress escape to deactivate zoom")
ax2.set_title("Zoomed Plot")
toggle_selector.RS = RectangleSelector(ax, onselect, drawtype='box', interactive=True)
fig.canvas.mpl_connect('key_press_event', toggle_selector)
plt.show()
您是否知道已經有了(http://matplotlib.org/users/navigation_toolbar.html)來實現通常的matplotlib繪製窗口中的[縮放工具]? – ImportanceOfBeingErnest
我沒有!感謝您的鏈接。儘管我並沒有試圖實際放大,而是試圖繪製與自身平行的更大數據集的一部分。也許縮放是不正確的詞。 – neerbasu
所以,也許你正在尋找[這樣的事情](http://gtk3-matplotlib-cookbook.readthedocs.io/en/latest/zooming.html)? – ImportanceOfBeingErnest