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=1
和 density=(1, 1)
都使用 30x30 的基本網格大小。先前,density=1
使用 30x30 的網格大小,但 density=(1, 1)
使用 25x25 的網格大小。
取得所有刻度標籤的列表(主要和次要)#
為 Axes.get_xticklabels
、Axes.get_yticklabels
和 Axis.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
新增了方法 skew
和 skew_deg
,以建立傾斜轉換。此外,清理了 matplotlib 內部程式碼,以支援在 Axes
中使用此類轉換。此轉換對於某些繪圖類型非常重要,尤其是氣象學中使用的 Skew-T。

支援在圓餅圖中指定楔形和文字的屬性。#
為 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。

極座標圖 r 刻度位置#
新增了透過 set_rlabel_position
控制極座標圖上 r 刻度標籤的角位置的能力。
日期處理#
支援 n 維陣列進行日期轉換#
Andrew Dawson 為 matplotlib.dates.num2date()
、matplotlib.dates.date2num()
和 matplotlib.dates.datestr2num()
新增了 n 維陣列處理的支援。此外,也將支援新增至單位轉換介面 matplotlib.dates.DateConverter
和 matplotlib.units.Registry
。
組態 (rcParams)#
新增了 savefig.transparent
#
控制預設是否以透明背景儲存圖形。先前 savefig
預設始終為非透明背景。
axes.titleweight
#
新增了 rcParam 來控制標題的粗細。
新增了 axes.formatter.useoffset
#
控制 ScalarFormatter
中 useOffset 的預設值。如果為 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 上運行。