Matplotlib 1.3 的新功能 (2013 年 8 月 1 日)#

注意

matplotlib 1.3 支援 Python 2.6、2.7、3.2 和 3.3

1.3.1 的新功能#

1.3.1 是一個微型發行版本,主要處理改進的設定和相依性的處理,以及更正和增強文件。

自 1.3.0 以來,1.3.1 中進行了以下變更。

增強功能#

錯誤修正#

  • 直方圖繪圖現在包含結束線。

  • 修正了 Molleweide 投影。

  • 改進了對來自 Microsoft 和 Macintosh 風格的非 ASCII 中繼資料字型的處理。

  • 現在 PDF 後端中,填充繪圖之間的影線可以正確運作。

  • 緊密邊界框支援現在可以在 PGF 後端中運作。

  • 透明圖形現在可以在 Qt4Agg 後端中正確顯示。

  • 現在可以從一個子圖繪製到另一個子圖的線條。

  • 改進了遮罩陣列上的單位處理。

設定和相依性#

  • 現在可以使用任何 1.5.6 或更新版本的 pyparsing,而不會顯示數百個警告。

  • 現在可以在 MS-Windows 上使用 64 位元版本的 Ghostscript。

  • 當從原始碼安裝到沒有 Numpy 的環境中時,Numpy 將首先被下載和建置,然後用於建置 matplotlib。

  • 外部安裝的後端現在始終使用模組的完整限定路徑匯入。

  • 可與較新版本的 wxPython 搭配使用。

  • 現在可以使用從原始碼全域安裝在系統上的 PyCXX 建置。

  • 更好地偵測 Gtk3 相依性。

測試#

  • 測試現在應該可以在非英文地區設定中運作。

  • PEP8 一致性測試現在會報告問題的位置。

新的繪圖功能#

xkcd 風格的草圖繪圖#

為了讓您的繪圖具有可能缺少的權威感,Michael Droettboom (受 PR #1329 中許多其他人的工作的啟發) 新增了 xkcd 風格的草圖繪圖模式。若要使用它,只需在建立繪圖之前呼叫 matplotlib.pyplot.xkcd 即可。若要進行非常精細的控制,也可以使用 matplotlib.artist.Artist.set_sketch_params() 單獨修改每個 artist 的草圖參數。

../../_images/sphx_glr_xkcd_001.png

更新 Axes3D.contour 方法#

Damon McDougall 更新了 tricontour()tricontourf() 方法,以允許在任意非結構化的使用者指定三角剖分上進行 3D 等高線繪圖。

../../_images/sphx_glr_tricontour3d_001.png

新的 eventplot 繪圖類型#

Todd Jennings 新增了一個 eventplot() 函數,用於建立多行或多列相同的線段

../../_images/sphx_glr_eventplot_demo_001.png

此功能新增了一個 EventCollection 類別,允許繪製和操作相同的線段的列或行。

三角形網格內插#

Geoffroy Billotey 和 Ian Thomas 新增了在三角形網格內執行內插的類別:(LinearTriInterpolatorCubicTriInterpolator)和一個用於尋找點所在的三角形的工具類別(TrapezoidMapTriFinder)。還新增了一個用於執行網格細化和平滑輪廓的輔助類別(UniformTriRefiner)。最後,新增了一個實現一些三角形網格改進基本工具的類別(TriAnalyzer)。

../../_images/sphx_glr_tricontour_smooth_user_001.png

堆疊圖的基準線#

Till Stensitzki 為 stackplot() 新增了非零基準線。它們可以是對稱的或加權的。

../../_images/sphx_glr_stackplot_demo_001.png

矩形色彩條延伸#

Andrew Dawson 為 colorbar() 新增了一個新的關鍵字引數 *extendrect*,以選擇性地使色彩條延伸部分變成矩形而不是三角形。

更穩健的盒狀圖#

Paul Hobson 為 boxplot() 方法提供了一個修復,以防止在數據集分佈不均時,鬚線被繪製在盒子的內部。

不帶引數呼叫 subplot()#

現在,不帶任何引數呼叫 subplot() 的行為與 subplot(111)subplot(1, 1, 1) 相同,它會為整個圖形建立一個軸。這已經是 axes()subplots() 的行為,現在這種一致性也與 subplot() 共享。

繪圖#

面顏色和邊緣顏色的獨立 alpha 值#

Wes Campaigne 修改了繪製 Patch 物件的方式,使得(對於支援透明度的後端)您可以透過以 RGBA 格式指定顏色,為面和邊緣設定不同的 alpha 值。請注意,如果您為修補物件設定 alpha 屬性(例如,使用 set_alpha()alpha 關鍵字引數),則該值將覆蓋在面和邊緣顏色中設定的 alpha 分量。

線條的路徑效果#

感謝 Jae-Joon Lee,路徑效果現在也適用於繪圖線。

../../_images/sphx_glr_patheffect_demo_001.png

更輕鬆地為具有顏色的級別建立色彩圖和歸一化器#

Phil Elson 新增了 matplotlib.colors.from_levels_and_colors() 函式,可輕鬆地為 matplotlib.pyplot.pcolormesh() 等繪圖類型建立用於表示離散顏色的色彩圖和歸一化器,其介面與 matplotlib.pyplot.contourf 類似。

完全控制背景顏色#

Wes Campaigne 和 Phil Elson 修復了 Agg 後端,使得當 fig.patch.get_alpha() 不為 1 時,PNG 現在會以正確的背景顏色儲存。

改進的 bbox_inches="tight" 功能#

bbox_inches="tight" 傳遞給 pyplot.savefig 現在會考量圖形上的*所有*藝術家,以前並非如此,並且導致了幾個未按預期運作的邊緣情況。

初始化旋轉矩形#

Damon McDougall 擴充了 Rectangle 建構函式,使其接受 *angle* kwarg,以指定矩形的旋轉角度(以度為單位)。

文字#

錨定文字支援#

SVG 和 pgf 後端現在能夠將文字對齊資訊儲存到其輸出格式。這樣可以在儲存的圖形中編輯文字元素,例如使用 Inkscape,同時保留其預期的位置。對於 SVG,請注意您必須停用預設的文字轉路徑轉換 (mpl.rc('svg', fonttype='none'))。

更好的垂直文字對齊和多行文字#

現在,文字的垂直對齊在各個後端之間是一致的。您可能會看到文字放置方面的小差異,尤其是在旋轉文字方面。

如果您正在使用自訂後端,請注意 draw_text 渲染器方法現在會傳遞基準線的位置,而不是文字邊界框底部的邊界位置。

多行文字現在會為非常高或非常低的文字(例如上標和下標)的高度留下足夠的空間。

左側和右側軸標題#

Andrew Dawson 新增了使用 title() 的新關鍵字引數 *loc*,將軸標題與軸頂部的左側和右側對齊的功能。

改進的手動輪廓圖標籤定位#

Brian Mattern 修改了手動輪廓圖標籤定位程式碼,以沿線段內插並尋找輪廓上最接近請求位置的實際點。以前,使用的是最接近的路徑頂點,對於直線輪廓,有時與請求的位置相距甚遠。現在可以實現更精確的標籤定位。

組態 (rcParams)#

快速尋找 rcParams#

Phil Elson 使得搜尋 rcParameters 變得更容易,方法是將有效的正規表示式傳遞給 matplotlib.RcParams.find_all()matplotlib.RcParams 現在還具有漂亮的 repr 和 str 表示法,以便漂亮地列印搜尋結果

>>> import matplotlib
>>> print(matplotlib.rcParams.find_all('\.size'))
RcParams({'font.size': 12,
          'xtick.major.size': 4,
          'xtick.minor.size': 2,
          'ytick.major.size': 4,
          'ytick.minor.size': 2})

axes.xmarginaxes.ymargin 已新增至 rcParams#

新增了 rcParams["axes.xmargin"] (預設值:0.05) 和 rcParams["axes.ymargin"] (預設值:0.05),以組態所使用的預設邊界。以前,它們被硬式編碼為預設值 0,這兩個 rcParam 值的預設值都是 0。

字型 rcParams 的變更#

現在,font.* rcParams 僅影響設定 rcParam 後建立的文字物件,不會追溯影響已存在的文字物件。這使其行為與大多數其他 rcParams 一致。

新增了 savefig.jpeg_quality rcParam#

新增了 savefig.jpeg_quality rcParam,以便使用者可以組態將圖形寫入為 JPEG 時使用的預設品質。預設品質為 95;以前,預設品質為 75。此變更最大限度地減少了 JPEG 影像中固有的失真,特別是對於顏色有急劇變化的影像(如繪圖)。

後端#

WebAgg 後端#

Michael Droettboom、Phil Elson 和其他人開發了一個新的後端 WebAgg,以在網頁瀏覽器中顯示圖形。它適用於動畫,並且具有完全互動性。

../../_images/webagg_screenshot.png

未來版本的 matplotlib 將會把這個後端與 IPython notebook 整合,以提供完全基於網頁瀏覽器的繪圖前端。

記住儲存目錄#

Martin Spacek 讓儲存圖形的對話框記住上次儲存的目錄。預設值可透過新的 rcParams["savefig.directory"] (預設值:'~') rcParam 在 matplotlibrc 中設定。

文件和範例#

Numpydoc 文件字串#

Nelle Varoquaux 已開始一個持續進行的專案,將 matplotlib 的文件字串轉換為 numpydoc 格式。詳情請參閱 MEP10

範例重組#

Tony Yu 已開始將範例重組為更有意義的類別。新的範例展示頁面是這項持續進行的工作的成果。詳情請參閱 MEP12

範例現在使用 subplots()#

為了簡潔和清楚起見,大多數的範例現在使用較新的 subplots(),它可以在一次呼叫中建立一個圖形和一個(或多個)軸物件。舊的方式需要呼叫 figure(),然後接著一個(或多個)subplot() 呼叫。

基礎架構#

整理#

一些在 1.2 或更早版本中已被棄用,或長期以來一直處於無法運作狀態的功能已被移除。重點包括移除 Qt 版本 3 的後端,以及 FltkAgg 和 Emf 後端。如需完整列表,請參閱 1.3.x 中的 API 變更

新的安裝腳本#

matplotlib 1.3 包含一個完全重寫的安裝腳本。我們現在在 tarball 和安裝程式本身中提供的相依性較少。值得注意的是,pytzdateutilpyparsingsix 不再包含在 matplotlib 中。您可以先手動安裝它們,或讓 pip 在安裝 matplotlib 時將它們作為相依性一起安裝。現在可以選擇不在安裝中包含某些子元件,例如單元測試資料。詳情請參閱 setup.cfg.template

XDG 基本目錄支援#

在 Linux 上,matplotlib 現在使用 XDG 基本目錄規範來尋找 matplotlibrc 設定檔。matplotlibrc 現在應保存在 ~/.config/matplotlib 中,而不是 ~/.matplotlib 中。如果在舊位置找到您的設定,仍將使用它,但會顯示警告。

使用 pyplot 捕捉開啟過多圖形的情況#

透過 pyplot.figure 建立的圖形會保留,直到它們被明確關閉。因此,matplotlib 的新使用者在迴圈中建立大量圖形而不關閉它們時,常常會耗盡記憶體。

現在,當一次開啟過多圖形時,matplotlib 會顯示一個 RuntimeWarning。預設情況下,這會在開啟 20 個或更多圖形時顯示,但可以使用 figure.max_open_warning rcParam 控制確切的數字。