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 中進行了以下變更。
增強功能#
新增用於建立多頁 PDF 的內容管理器 (請參閱
matplotlib.backends.backend_pdf.PdfPages
)。WebAgg 後端現在在異質網際網路連線上的延遲應該較低。
錯誤修正#
直方圖繪圖現在包含結束線。
修正了 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 的草圖參數。

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

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

此功能新增了一個 EventCollection
類別,允許繪製和操作相同的線段的列或行。
三角形網格內插#
Geoffroy Billotey 和 Ian Thomas 新增了在三角形網格內執行內插的類別:(LinearTriInterpolator
和 CubicTriInterpolator
)和一個用於尋找點所在的三角形的工具類別(TrapezoidMapTriFinder
)。還新增了一個用於執行網格細化和平滑輪廓的輔助類別(UniformTriRefiner
)。最後,新增了一個實現一些三角形網格改進基本工具的類別(TriAnalyzer
)。

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

矩形色彩條延伸#
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,路徑效果現在也適用於繪圖線。

更輕鬆地為具有顏色的級別建立色彩圖和歸一化器#
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.xmargin
和 axes.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,以在網頁瀏覽器中顯示圖形。它適用於動畫,並且具有完全互動性。

未來版本的 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 和安裝程式本身中提供的相依性較少。值得注意的是,pytz、dateutil、pyparsing 和 six 不再包含在 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 控制確切的數字。