Matplotlib 1.4 的新功能 (2014 年 8 月 25 日)#

Thomas A. Caswell 擔任 1.4 版本的發行經理。

注意

matplotlib 1.4 支援 Python 2.6、2.7、3.3 和 3.4

新的色圖#

在熱圖中,通常使用綠色到紅色的光譜來表示活動強度,但對於紅/綠色盲來說,這可能會產生問題。現在有一個新的、對色盲友善的色圖可於 matplotlib.cm.Wistia 中使用。此色圖保留了紅/綠色的符號,同時透過亮度變化實現了對第二型色盲的可讀性。請參閱 此處 以取得更多資訊。

nbagg 後端#

Phil Elson 新增了一個名為「nbagg」的新後端,該後端可以在即時 IPython 筆記本工作階段中啟用互動式圖形。該後端利用為 webagg 後端開發的基礎設施,該後端本身在瀏覽器中提供了獨立的伺服器支援互動式圖形,然而 nbagg 不需要專用的 matplotlib 伺服器,因為所有通訊都是透過 IPython Comm 機制處理的。

與其他後端一樣,可以使用以下方式在 IPython 筆記本中啟用 nbagg:

import matplotlib
matplotlib.use('nbagg')

一旦建立圖形並隨後顯示,它們將被放置在筆記本中的互動式小工具中,允許像任何其他 matplotlib 後端一樣進行平移和縮放。由於圖形需要連線到 IPython 筆記本伺服器才能進行互動,因此一旦儲存筆記本,每個圖形將被呈現為靜態影像 - 從而允許在 nbviewer 等服務上非互動式地檢視圖形。

新的繪圖功能#

冪律歸一化#

Ben Gamari 新增了一種冪律歸一化方法,PowerNorm。這個類別使用建構函式的 gamma 引數提供的指數,將數值範圍對應到具有冪律縮放的 [0,1] 區間。冪律歸一化對於強調直方圖中的小族群可能很有用,例如。

完全可自訂的盒狀圖#

Paul Hobson 大幅修改了 boxplot() 方法,現在可以完全自訂每個圖形的樣式和位置。在底層,boxplot() 依賴一個新的函數(boxplot_stats()),它接受目前與 boxplot() 相容的任何資料結構,並返回一個字典列表,其中包含箱形圖每個元素的位置。然後調用第二個方法 bxp,根據統計數據繪製箱形圖。

可以像以前一樣使用 boxplot() 函數從資料一步生成箱形圖。但是現在使用者可以靈活地獨立生成統計數據,或者修改 boxplot_stats() 的輸出,然後再使用 bxp 進行繪圖。

最後,現在可以開啟或關閉每個圖形物件(例如,箱體、離群值、帽簷、缺口),並且可以透過個別的 kwargs 傳入它們的樣式。請參閱範例:箱形圖中的圖形自訂箱形圖的獨立計算和繪圖

新增了一個布林值 kwarg manage_xticks,如果為 False,則會停用 bxp() 對 x 軸刻度和限制的管理。

在 2D 圖形中支援日期時間軸#

Andrew Dawson 為 contour()contourf()pcolormesh()pcolor() 新增了對日期時間軸的支援。

支援其他頻譜類型#

Todd Jennings 新增了對新型頻譜圖的支援:magnitude_spectrum()phase_spectrum()angle_spectrum(),以及 mlab 中對應的函數。

他還將這些頻譜類型新增到 specgram() 中,並新增了對線性縮放的支援(除了現有的 dB 縮放)。也為 specgram() 新增了對其他頻譜類型的支援。

他還提高了所有這些函數和繪圖類型的效能。

支援在 mlab 中對 2D 陣列進行去趨勢化和加窗#

Todd Jennings 在 detrend_mean()detrend_none()detrend() 中新增了對 2D 陣列的支援,並新增了 matplotlib.mlab.apply_window,它支援對 2D 陣列加窗。

支援 mlab 中的步幅#

Todd Jennings 在 mlab 中新增了一些函數,以便更容易使用 NumPy 步幅來建立記憶體效率高的 2D 陣列。這包括 matplotlib.mlab.stride_repeat(它重複一個陣列來建立 2D 陣列)和 matplotlib.mlab.stride_windows(它使用移動視窗從 1D 陣列建立 2D 陣列)。

新式格式化字串的格式化程式#

新增了 StrMethodFormatter,它的工作與 FormatStrFormatter 相同,但它接受新式格式化字串而不是 printf 式格式化字串。

在流線圖中一致的網格大小#

streamplot() 對於 density=1density=(1, 1) 都使用 30x30 的基本網格大小。先前,density=1 使用 30x30 的網格大小,但 density=(1, 1) 使用 25x25 的網格大小。

取得所有刻度標籤的列表(主要和次要)#

Axes.get_xticklabelsAxes.get_yticklabelsAxis.get_ticklabels 新增了 kwarg 'which'。'which' 可以是 'major'、'minor' 或 'both',選擇要傳回哪個刻度,就像 set_ticks_position 一樣。如果 'which' 是 None,則會使用舊的行為(由布林值 *minor* 控制)。

在 ImageGrid 中支援單獨的水平/垂直軸內距#

如果需要單獨的水平/垂直內距,mpl_toolkits.axes_grid1.axes_grid.ImageGrid 的 kwarg 'axes_pad' 現在可以是元組。當您在每個子圖旁邊都有一個標記圖例,並且需要為圖例標籤留出一些空間時,這應該非常有幫助。

支援傾斜轉換#

Affine2D 新增了方法 skewskew_deg,以建立傾斜轉換。此外,清理了 matplotlib 內部程式碼,以支援在 Axes 中使用此類轉換。此轉換對於某些繪圖類型非常重要,尤其是氣象學中使用的 Skew-T。

../../_images/sphx_glr_skewt_001.png

支援在圓餅圖中指定楔形和文字的屬性。#

pie 新增了 kwargs 'wedgeprops' 和 'textprops',以接受圓餅圖中楔形和文字物件的屬性。例如,可以指定 wedgeprops = {'linewidth':3} 來指定圓餅圖中楔形邊界的寬度。如需使用者可以指定的更多屬性,請查看楔形和文字物件的文件。

修正了誤差線上限/下限的方向#

Larry Bradley 修正了 errorbar() 方法,使上限和下限(*lolims*、*uplims*、*xlolims*、*xuplims*)現在指向正確的方向。

針對 Axes 的更一致的加入物件 API#

新增了 Axes 方法 add_image,使影像處理與繪圖物件 (artists)、集合 (collections)、容器 (containers)、線條 (lines)、補丁 (patches) 和表格 (tables) 看齊。

小提琴圖#

由 Parker、Gregory Kelsie、Adam Ortiz、Kevin Chan、Geoffrey Lee、Deokjae Donald Seo 和 Taesu Terry Lim 新增了小提琴圖的基本實作。小提琴圖可用於表示樣本資料的分布。它們類似於盒狀圖,但使用核密度估計函數來呈現所使用資料樣本的平滑近似值。新增的功能有:

violin - 從統計資料集合呈現小提琴圖。violin_stats() - 產生適用於呈現小提琴圖的統計資料集合。violinplot() - 從一組樣本資料建立小提琴圖。此方法利用 violin_stats() 來處理輸入資料,並使用 violin_stats() 來進行實際渲染。使用者也可以自由修改或替換 violin_stats() 的輸出,以便根據自己的喜好自訂小提琴圖。

此功能是在多倫多大學士嘉堡分校 (University of Toronto, Scarborough) 於 2014 年冬季由 Anya Tafliovich 開設的軟體工程課程中實作的。

更多 markevery 選項來僅顯示標記的子集#

Rohan Walker 擴充了 Line2D 中的 markevery 屬性。現在您可以使用整數、切片物件、numpy 花式索引或浮點數來指定要顯示的標記子集。使用浮點數會在沿著線條的顯示座標距離大致相等的位置顯示標記。

修正了極座標圖中滑鼠座標給出錯誤的 theta 值問題#

將程式碼新增至 transform_non_affine,以確保計算出的 theta 值介於 0 和 2 * pi 的範圍之間,因為問題是該值在將方向和旋轉應用於 theta 計算後可能會變為負數。

mplot3d 工具組的簡單箭頭圖#

在多倫多大學由 Anya Tafliovich 教授教授的大型軟體系統工程課程中的一個學生團隊,作為其期末專案之一,為 mplot3d 工具組實作了 3D 空間中簡單版本的箭頭圖。此功能記錄在 quiver 中。團隊成員包括:Ryan Steve D'Souza、Victor B、xbtsw、Yang Wang、David、Caradec Bisesar 和 Vlad Vassilovski。

../../_images/sphx_glr_quiver3d_001.png

極座標圖 r 刻度位置#

新增了透過 set_rlabel_position 控制極座標圖上 r 刻度標籤的角位置的能力。

日期處理#

支援 n 維陣列進行日期轉換#

Andrew Dawson 為 matplotlib.dates.num2date()matplotlib.dates.date2num()matplotlib.dates.datestr2num() 新增了 n 維陣列處理的支援。此外,也將支援新增至單位轉換介面 matplotlib.dates.DateConvertermatplotlib.units.Registry

組態 (rcParams)#

新增了 savefig.transparent#

控制預設是否以透明背景儲存圖形。先前 savefig 預設始終為非透明背景。

axes.titleweight#

新增了 rcParam 來控制標題的粗細。

新增了 axes.formatter.useoffset#

控制 ScalarFormatteruseOffset 的預設值。如果為 True 且資料範圍遠小於資料平均值,則會確定偏移量,使刻度標籤有意義。如果為 False,則在所有情況下都會格式化完整數字。

新增了 nbagg.transparent#

控制 nbagg 圖形是否具有透明背景。nbagg.transparent 預設為 True

符合 XDG 標準#

Matplotlib 現在會在符合 XDG 標準的位置尋找組態檔(包括 rcparams 和樣式)。

新增了 style 套件#

現在您可以使用新的 style 套件輕鬆切換不同的樣式。

>>> from matplotlib import style
>>> style.use('dark_background')

後續繪圖將使用更新的顏色、大小等。要列出所有可用的樣式,請使用

>>> print style.available

您可以將自己的自訂 <style name>.mplstyle 檔案新增至 ~/.matplotlib/stylelib 或使用指向包含 matplotlibrc 設定的檔案的 URL 來呼叫 use

請注意,這是一項實驗性功能,介面可能會在使用者測試此新功能時發生變化。

後端#

Qt5 後端#

Martin Fitzpatrick 和 Tom Badran 實作了 Qt5 後端。Qt4 和 Qt5 之間命名空間位置的差異透過墊片 (shim) 將 Qt4 看起來像 Qt5 來處理,因此 Qt5 實作是主要實作。Qt4 的向後相容性透過包裝 Qt5 實作來維護。

Qt5Agg 後端目前無法與 IPython 的 %matplotlib magic 搭配使用。

1.4.0 版本存在工具列損壞的已知錯誤。可以透過以下方式修正:

cd path/to/installed/matplotlib
wget https://github.com/matplotlib/matplotlib/pull/3322.diff
# unix2dos 3322.diff (if on windows to fix line endings)
patch -p2 < 3322.diff

Qt4 後端#

Rudolf Höfler 變更了 subplottool 的外觀。現在所有滑桿都垂直排列,並新增了用於緊密版面配置和重設的按鈕。此外,subplottool 現在實作為模式對話框。先前它是 QMainWindow,如果關閉繪圖視窗,則會保持 SPT 開啟。

在圖形選項對話框中,現在可以選擇(重新)產生簡單的自動圖例。任何明確設定的圖例項目都將遺失,但曲線標籤、線條樣式等變更現在將會在圖例中更新。

Qt4 後端在 Windows 下的互動效能已大幅提升。

從 Qt 到 Matplotlib 可理解的值的按鍵訊號對應已大幅改進(適用於 Qt4 和 Qt5)。

Cairo 後端#

Cairo 後端現在能夠使用比 pycairo 綁定 更積極維護的 cairocffi 綁定

Gtk3Agg 後端#

如果安裝了 cairocffi 綁定,Gtk3Agg 後端現在可以在 Python 3.x 上運行。

PDF 後端#

新增了用於儲存多頁 PDF 的上下文管理器。

文字#

SVG 後端支援文字 URL#

SVG 後端現在會將 Text 物件的 URL 渲染為輸出 SVG 中的連結。這允許使用者使用 Text 類別的 url 關鍵字,在儲存的圖表中建立可點擊的文字。

錨定尺寸條字體#

AnchoredSizeBar 中新增了 fontproperties 關鍵字,用於控制字體屬性。

Sphinx 擴充功能#

plot_directive Sphinx 擴充功能中的 :context: 指令現在可以接受一個可選的 reset 設定,這將導致上下文重置。這允許在文件中出現多個不同的上下文。要啟用此選項,請在任何需要重置上下文的時候使用 :context: reset 而不是 :context:

圖例和路徑效果文件#

圖例指南路徑效果指南 都已更新,以更好地反映這些強大功能的全部潛力。

小工具#

範圍選擇器#

SpanSelector 中新增了一個選項 span_stays,這會讓選擇器矩形在您釋放滑鼠後仍保留在軸上。

GAE 整合#

Matplotlib 現在可以在 Google App Engine 上運行。