Matplotlib 1.0 的新功能 (2010 年 7 月 6 日)#

HTML5/Canvas 後端#

Simon Ratcliffe 和 Ludwig Schwardt 發布了 matplotlib 的 HTML5/Canvas 後端。這個後端幾乎具備完整的功能,而且他們做了很多工作,將他們的 html5 渲染影像與我們的核心渲染器 Agg 進行比較。這個後端在符合 html5 標準的瀏覽器中具有 matplotlib 圖形的客戶端/伺服器互動式導覽功能。

精密的子圖網格佈局#

Jae-Joon Lee 編寫了 gridspec,這是一個新的模組,用於執行複雜的子圖佈局,具有行和列跨度和更多功能。有關教學概述,請參閱 在圖表中排列多個座標軸

../../_images/sphx_glr_demo_gridspec01_001.png

簡易的 Python 風格子圖#

Fernando Perez 厭倦了在使用 matplotlib API 時建立圖形和多個子圖所需的所有樣板程式碼,並編寫了一個 subplots() 輔助函數。基本用法允許您使用 numpy 索引 (從 0 開始) 建立圖形和子圖陣列。例如:

fig, axarr = plt.subplots(2, 2)
axarr[0,0].plot([1,2,3])   # upper, left

有關多個程式碼範例,請參閱 多個子圖

等高線修正和 triplot#

Ian Thomas 修正了一個長期存在的錯誤,這個錯誤困擾了我們最有才華的開發人員多年。 contourf() 現在可以處理內部的遮罩區域,而且線條和填滿等高線的邊界一致。

此外,他還貢獻了一個新的模組 tri 和輔助函數 triplot(),用於建立和繪製非結構化三角形網格。

../../_images/sphx_glr_triplot_demo_001.png

支援多次呼叫 show#

一個長期的要求是支援多次呼叫 show()。這一直很困難,因為很難在不同的作業系統、使用者介面工具組和版本之間獲得一致的行為。Eric Firing 在合理化不同後端的 show 方面做了很多工作,其預期行為是讓 show 顯示所有新建立的圖形,並封鎖執行,直到它們關閉。重複呼叫 show 應顯示自上次呼叫以來新建立的圖形。Eric 在他可以存取的使用者介面工具組、版本和平台上做了很多測試,但無法測試所有這些,因此請將問題報告給 郵件清單錯誤追蹤器

mplot3d 圖形可以嵌入任意座標軸#

您現在可以將 mplot3d 圖形放置在任意座標軸位置,支援在同一個圖形中混合 2D 和 3D 圖形,和/或在單個圖形中使用多個 3D 圖形,方法是將 "projection" 關鍵字引數傳遞給 add_axes 或 add_subplot。感謝 Ben Root。

(原始碼, 2x.png, png)

tick_params#

Eric Firing 編寫了 tick_params,這是一個方便更改刻度和刻度標籤外觀的方法。請參閱 pyplot 函數 tick_params() 以及相關的 Axes 方法 tick_params()

大量的效能與功能增強#

  • 更快地放大大型圖像,並能夠縮放到單個像素

  • 本地安裝的文檔效果更好

  • 改進的「小工具」--支援滑鼠抓取

  • 更精確地將線條對齊到像素邊界

  • 更一致地處理顏色,尤其是在整個 API 中的 alpha 通道

大幅改進的軟體工程#

由於改進的 軟體工程,matplotlib 的主幹可能處於有史以來最好的狀態。我們現在有一個 buildbot,它在每次 svn 提交時運行一套 nose 回歸測試,自動生成一組圖像並將其與一組已知良好的圖像進行比較,在出現故障時向開發人員發送電子郵件,並附帶逐像素的圖像比較。發佈和發佈錯誤修復在分支中進行,允許在主幹中進行積極的新功能開發,同時保持發佈分支的穩定。感謝 Andrew Straw、Michael Droettboom 和其他 matplotlib 開發人員的辛勤付出。

錯誤修復馬拉松#

Eric Firing 進行了一次錯誤修復和關閉馬拉松,在 Jae-Joon Lee、Michael Droettboom、Christoph Gohlke 和 Michiel de Hoon 的幫助下,關閉了 (現在已關閉的) SourceForge 錯誤追蹤器上的 100 多個錯誤。