2016-02-28 71 views
14

我對matplotlib並不是很陌生,我非常慚愧地承認,我一直使用它作爲獲取解決方案的工具,儘可能快捷方便。所以我知道如何獲得基本的情節,子情節和東西,並且有不少代碼可以不時重複使用......但是我沒有「深刻的(知識)」matplotlib瞭解matplotlib:plt,figure,ax(arr)?

最近我以爲我應該改變這一點,並通過一些教程自己工作。但是,我仍然對matplotlibs plt,fig(ure)ax(arr)感到困惑。真的有什麼區別?

在大多數情況下,對於一些「quick'n'dirty」密謀我看只用pyplot as plt和人plt.plot直接打印。因爲我有多重的東西往往情節,我經常使用f, axarr = plt.subplots() ...但最時候,你看到的只是代碼將數據放入了axarr並忽略數字f

所以,我的問題是:什麼是matplotlib何時使用工作一個乾淨的方式plt只,是什麼或如何處理一個figure是用於?是否應該只包含數據的子圖?或者它是否適用於所有類似於樣式,清理繪圖,......,子圖內的所有操作?

我希望這不是廣泛的。基本上我正在徵求一些關於plt < - >fig < - >ax(arr)(以及何時/如何正確使用它們)的真實目的的建議。

教程也將受到歡迎。 matplotlib文檔對我來說相當困惑。當人們搜索真正具體的東西時,比如縮放圖例,不同的繪圖標記和顏色等等,官方文檔非常精確,但在我看來,一般信息並不是那麼好。太多不同的例子,沒有真正的目的解釋......看起來或多或少像所有可能的API方法和論據的大列表。

+0

http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure是一個很好的開始。 – tacaswell

回答

9

pyplot是matplotlib中的'scripting'級別的API(其最高級別的API用matplotlib做了很多工作)。它允許你以類似的方式使用程序接口來使用matplotlib,就像你可以用Matlab一樣。 pyplot具有所有函數委託給(@tacaswell dixit)的「當前圖」和「當前座標軸」的概念。因此,當您使用模塊pyplot上提供的功能時,您正在繪製「當前圖」和「當前軸」。

如果您想對您的繪圖位置/內容進行「細粒度」控制,那麼您應該使用面向對象的API,使用FigureAxes的實例。

pyplot中的可用函數在Axes中具有等效方法。

從回購anatomy of matplotlib

  • Figure在這個層次結構中的頂級容器。這是整個窗口/頁面,一切都在繪製。你可以有多個獨立的數字,並且Figure可以包含多個軸。

但是......

  • 大多數繪圖發生在一個Axes。這些軸實際上是我們繪製數據的區域以及與其相關的任何刻度/標籤/等等。通常情況下,我們會設置Axes與調用子圖(其中Axes定期網格),所以在大多數情況下,AxesSubplot是同義詞。

  • 每個Axes都有一個XAxis和一個YAxis。這些包含如果你想知道你可以訪問這個link情節的解剖蜱,蜱位置,標籤等

0
  • pyplot是MATLAB像API對於那些誰是熟悉MATLAB,並希望進行快速和骯髒的陰謀
  • figure是爲那些誰不關心MATLAB風格繪製面向對象的API

所以你可以使用任何一個,但可能不是兩個在一起。

+0

'pyplot'完全依據OO API實現,因此您可以混合搭配。 – tacaswell

+0

那麼'pyplot'和'figure'之間的區別在哪裏呢? 「pyplot」是否會彈出整個窗口,並只顯示窗口中包含的圖像? – daniel451

+0

一般而言,iPython的'pyplot'。 python腳本的'figure'。雖然你可以混合搭配,但我覺得這不太吸引人。 – Hun

相關問題