# 交互式導航
> 原文:[Interactive navigation](http://matplotlib.org/users/navigation_toolbar.html)
> 譯者:[飛龍](https://github.com/)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)

所有圖形窗口都帶有導航工具欄,可用于瀏覽數據集。 以下是工具欄底部的每個按鈕的說明:

`Home`(首頁)、`Forward`(前進)和`Back`(后退)按鈕:
這些類似于 Web 瀏覽器的前進和后退按鈕。 它們用于在之前定義的視圖之間來回瀏覽。 它們沒有意義,除非你已經使用平移和縮放按鈕訪問了其他地方。 這類似于嘗試在訪問新頁面之前單擊 Web 瀏覽器上的返回 - 什么都不會發生。 首頁總是你第一個瀏覽的頁面,以及你的數據的默認視圖。 對于`Home`,`Forward`和`Back`,應該將其看做 Web瀏覽器,其中的數據視圖是網頁。 使用`Pan`和`Zoom`來定義新視圖。

`Pan/Zoom`(平移/縮放)按鈕
此按鈕有兩種模式:平移和縮放。 單擊工具欄按鈕激活平移和縮放,然后將鼠標放在軸域的某個地方。 按住鼠標左鍵并將其拖動到新位置來平移圖形。 當你釋放它時,你按下的點處的數據將移動到你釋放的點。 如果在平移時按`'x'`或`'y'`,移動會分別限制在`x`或`y`軸。 按鼠標右鍵并將其拖動到新位置來進行縮放。 向右移動使`x`軸成比例放大,或者向左移動成比例縮小。 `y`軸和上/下移動同上。 開始縮放時鼠標下的點會保持靜止,你可以縮放圖形中的其它任意點。 你可以使用快捷鍵`'x'`,`'y'`或`CONTROL`分別將縮放約束為`x`軸,`y`軸或保留寬高比。
使用極坐標繪圖時,平移和縮放功能的行為不同。 可以使用鼠標左鍵拖動半徑軸標簽。 可以使用鼠標右鍵放大和縮小半徑刻度。

`Zoom-to-rectangle`(縮放到矩形)按鈕
單擊此工具欄按鈕以激活此模式。 將鼠標放在軸域的某處,然后按鼠標左鍵。 在按住按鈕的同時拖動鼠標到新位置并釋放。 軸域會放大并限制于你定義的矩形。 在此模式中還有一個實驗性的`zoom out to rectangle`(縮小到矩形),使用右鍵,將整個軸域縮小并放置在矩形定義的區域中。

`Subplot-configuration`(子圖配置)按鈕
使用此工具配置子圖的參數:左邊距,右邊距,上邊距,下邊距,行間隔和列間隔。

`Save`(保存)按鈕
單擊此按鈕可啟動文件保存對話框。 你可以使用以下擴展名保存文件:`png`,`ps`,`eps`,`svg`和`pdf`。
## 瀏覽快捷鍵
下表包含所有默認的快捷鍵,可以使用`matplotlibrc`(`#keymap.*`)覆蓋。
| 命令 | 快捷鍵 |
| --- | --- |
| 主頁/重置 | `h`、`r`或`home` |
| 后退 | `c`、左箭頭或`backspace` |
| 前進 | `v`或右箭頭 |
| 平移/縮放 | `p` |
| 縮放到矩形 | `o` |
| 保存 | `ctrl + s` |
| 切換全屏 | `ctrl + f` |
| 關閉繪圖 | `ctrl + w` |
| 將平移/縮放限制于`x`軸 | 使用鼠標平移/縮放時按住`x` |
| 將平移/縮放限制于`y`軸 | 使用鼠標平移/縮放時按住`y` |
| 保留寬高比 | 使用鼠標平移/縮放時按住`CONTROL` |
| 切換網格 | 鼠標在軸域上時按下`g` |
| 切換`x`軸刻度(對數/線性) | 鼠標在軸域上時按下`L`或`k` |
| 切換`y`軸刻度(對數/線性) | 鼠標在軸域上時按下`l` |
如果你使用`matplotlib.pyplot`,則會為每個圖形自動創建工具欄。 如果你正在編寫自己的用戶界面代碼,則可以將工具欄添加為窗口小部件。 確切的語法取決于你的 UI,但在`matplotlib/examples/user_interfaces目錄中有每個受支持的 UI 的示例。 這里是一些 GTK 的示例代碼:
```py
import gtk
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
win = gtk.Window()
win.connect("destroy", lambda x: gtk.main_quit())
win.set_default_size(400,300)
win.set_title("Embedding in GTK")
vbox = gtk.VBox()
win.add(vbox)
fig = Figure(figsize=(5,4), dpi=100)
ax = fig.add_subplot(111)
ax.plot([1,2,3])
canvas = FigureCanvas(fig) # a gtk.DrawingArea
vbox.pack_start(canvas)
toolbar = NavigationToolbar(canvas, win)
vbox.pack_start(toolbar, False, False)
win.show_all()
gtk.main()
```