Python可視化工具Matplotlib 3版出爐改進默認 後端終於變圓了

文章最後我準備了Python基礎學習資料,需要的朋友可以看一下文章最後的信息。

Matplotlib 3.0來了!新版Matplotlib已能通過PyPI安裝了,不過,這一版本只支持python 3,Python 2死忠還得繼續用2.2.x版本。

Python可視化工具Matplotlib 3版出爐改進默認 後端終於變圓了


作為最熱門的Python 2D繪圖工具之一,你看到的論文、教程裡,有不少插圖出自它手。

3.0版總共有16項變化:

改進了默認後端選擇

現在,內置後端在運行時按順序嘗試,直到導入了其中一個為止,不再要求默認後端必須作為構建過程的一部分來設置。

無頭Linux服務器(由未定義的DISPLAY env來標識)不會選擇GUI後端。

新的循環調色板


Python可視化工具Matplotlib 3版出爐改進默認 後端終於變圓了


添加了兩種新調色板:twilight和twilight_shifted。它們都以相同的顏色開始、結束,每個調色板的兩半是對稱的,亮度相同顏色不同。

因為是循環的,所以它們很適合用在相位角、羅盤方向、一天中的時間等循環數據來上。

能按固定的數量級縮放軸

想要實現這個功能,需要為scilimits參數Axes.ticklabel_format設置相同的非零上限和下限。

比如說,要把y軸縮放100萬倍(1e6),代碼是這樣的:

ax.ticklabel_format(style='sci', scilimits=(6, 6), axis='y')


scilimits=(0, 0)的行為還和原來一樣,Matplotlib會根據軸上的數值來調整數量級,不讓它保持固定。以前,設置scilimits=(m, m)和設置scilimits=(0, 0)是一樣的。

為mpl_toolkits新增AnchoredDirectionArrows

AnchoredDirectionArrows是一個新增的mpl_toolkits類,它能繪製一對正交箭頭,在2D圖表上指示方向。

有幾個可選參數能改變佈局,比如旋轉箭頭、改變顏色等等,箭頭的頭尾兩部分長度、位置、寬度都能調整。

彩條能準確顯示次要刻度線了

新增了colorbar.Colobar.minorticks_on()方法(method),用來正確顯示彩條上的次要刻度標記;與之相對的colorbar.Colobar.minorticks_off(),可以移除次要刻度。

自動處理顏色條上的標記

以前,在大號彩條上加了標記(比如次要刻度線)之後,縮小彩條,標記就看起來很恐怖。

現在,標記的數量可以隨著彩條大小響應式變化了。

不再自動給重名文件改名

以前,用GUI的保存對話框來保存圖表文件時,如果它和磁盤上已有文件重名,Matplotlib會自動加個後綴。

現在,遇到重名的情況,Matplotlib會提示用戶,詢問是否覆蓋。

可以設置圖例標題字號了

現在,可以通過title_fontsize這個kwarg來設置Figure.legend和Axes.legend的字號了,還新增了一個rcParams["legend.title_fontsize"]。

二者的默認值都是None,也就是說圖例標題和軸標題的默認字號是相同的。

注意:是圖例標題,不是圖例本身。

rcParams支持用markevery設置axes.prop_cycle屬性

Matplotlib裡的rcParams設置對象,現在支持通過用markevery Line2D對象property的循環器來配置axes.prop_cycle屬性(attribute)。

pgf後端支持多頁PDF

from matplotlib.backends.backend_pgf import PdfPages
import matplotlib.pyplot as plt
with PdfPages('multipage.pdf') as pdf:
# page 1
plt.plot([2, 1, 3])
pdf.savefig()
# page 2
plt.cla()
plt.plot([3, 1, 2])
pdf.savefig()

默認餅圖終於圓了

這是一個重大進步。(正經臉.jpg)

以前,Matplotlib的一大槽點就是餅圖都是蛋形的。如果你還想調回原來的默認蛋型餅圖,可以用ax.set_aspect("auto")或者plt.axis("auto")把縱橫軸的比設為自動。

新增SubplotBase.get_gridspec

通過這種新方法,用戶可以輕鬆獲取gridspec。

import matplotlib.pyplot as plt
fig, axs = plt.subplots(3, 2)
gs = axs[0, -1].get_gridspec()
# remove the last column
for ax in axs[:,-1].flatten():
ax.remove()
# make a subplot in last column that spans rows.
ax = fig.add_subplot(gs[:, -1])
plt.show()
Python可視化工具Matplotlib 3版出爐改進默認 後端終於變圓了

軸標題不會再與x軸重疊了

以前,如果軸標題與x軸重疊,需要手動調整。

現在,如果x軸在頂部,軸標題會自動移到它上方。用戶想手動調整標題位置依然可以,不過有個小問題:不能放在默認的位置,放了系統就會自動移開。如果非要放,可以選一個接近的數字。比如說,ax.title.set_position(0.5, 1.0)就會被自動移開,改成ax.title.set_position(0.5, 1.01)就可以了。

GridSpec有了新便捷方法

現在,gridspec.GridSpec和gridspec.GridSpecFromSubplotSpec都有了便捷新方法,可以分別用Figure.add_gridspec和SubplotSpec.subgridspec替代。

import matplotlib.pyplot as plt
fig = plt.figure()
gs0 = fig.add_gridspec(3, 1)
ax1 = fig.add_subplot(gs0[0])
ax2 = fig.add_subplot(gs0[1])
gssub = gs0[2].subgridspec(1, 3)
for i in range(3):
fig.add_subplot(gssub[0, i])

Figure有了add_artist方法

Figure類新增了add_artist方法,可以直接用artist和figure相加。例如:

circ = plt.Circle((.7, .5), .05)
fig.add_artist(circ)

:math:指令重命名為:mathmpl:

matplotlib.sphinxext.mathmpl提供的第:math:個角色已經重命名為:mathmpl:,避免了和Sphinx 1.9默認提供的:math:衝突。

當使用1.8以下版本的Sphinx,:math:和:mathmpl:都能反向兼容。

下邊我將提供有關於Python的入門資料,關注頭條號並後臺私信回覆“資料”或者“Python”即可獲相關資料。

Python可視化工具Matplotlib 3版出爐改進默認 後端終於變圓了


分享到:


相關文章: