1. 程式人生 > 程式設計 >jupyter notebook 實現matplotlib圖動態重新整理

jupyter notebook 實現matplotlib圖動態重新整理

我就廢話不多說了,大家還是直接看程式碼吧!

import matplotlib
%matplotlib inline
from IPython import display

需要重新整理的地方,畫完圖之後新增

display.clear_output(wait=True)

補充知識:jupyter notebook matplotlib繪製動態圖並顯示在notebook中

有些時候matplotlib 的繪圖沒法顯示在notebook中,或者顯示不了。這與backend有關。

首先啟動你的notebook,輸入

%pylab

檢視你的matplotlib後端,我的輸出為:

Qt5Agg

這是後端的渲染方式,使用的是qt5渲染。啟用方式為在繪圖之前插入程式碼段:

%matplotlib qt5

這樣就能顯示出圖,但是是顯示在notebook之外的,如果我使用%matplotlib inline,圖的顯示並不正常。我也不知道為什麼,,,,,,,,,,,,,

如果你輸出的後端為其他型別,建議檢視下面的資料,直接輸入對應的繪圖啟用方式。

補充知識:matplotlib 常用backend

matplotlib 使用簡明教程(一)-基礎概念

Matplotlib 是一個用於繪製圖表的 Python 庫,可以用來處理圖片、繪製統計類的圖表。

本文分為幾篇,主要目的在於說明 Matplotlib 的一些使用方法。第一篇用於介紹 Matplotlib 的一些基本概念。

基本組成

以官網中圖片說明 Matplotlib 圖表中的基本組成成分。

jupyter notebook 實現matplotlib圖動態重新整理

figure:整個畫布,包含一個或多個 axes

axes:畫布中的某一個圖表,包含一個 plot

artist:元素,包括圖中所示的 label、line 等,也包括 plot

backend

每一種輸出的能力都叫做一種 backend,在我的理解中有點類似渲染器。

IPython 中的魔法語句 %matplotlib xxxx 就是選擇 backend。

選用哪種 backend,其優先順序選取如下:

matplotlibrc 檔案中的 backend

使用 MPLBACKEND 環境變數

使用 matplotlib.use() 函式,需要在匯入 pyplot 前使用

backend 從種類上,分為可互動型(user interface)和不可互動型兩種(hardcopy),如果希望檢視本地支援的 backend 有哪些,可以使用

matplotlib.rcsetup.interactive_bk # 可互動型
matplotlib.rcsetup.non_interactive_bk # 不可互動型
matplotlib.rcsetup.all_backends # 所有 backend

獲取當前的 backend 可以使用 matplotlib.pyplot.get_backend()

常用 backend 已在文尾附上。

互動模式

我理解,“互動模式”即代表著這個圖示在繪製後可以動態變化,例如預設的動畫以及使用者的操作。

當開啟互動模式後,繪製的圖表會自動更新、繪製,如果希望手動更新圖表,則使用 draw() 函式;而在非互動模式下,當所有後臺繪製完成後,需要使用 show() 函式,才會將最終圖表展示出來。

如果希望使用互動模式,需要選用可互動型的 backend。

通過 matplotlib.interactive() 設定互動模式的開啟與關閉

通過 matplotlib.is_interactive() 查詢當前實發支援互動模式

也可以通過 matplotlib.pyplot.ion() 和 matplotlib.pyplot.ioff() 來開啟/關閉互動模式

附:常用 backend

不可互動型

AGG:渲染為 png 檔案

PS:渲染為 ps 檔案

PDF:渲染為 pdf 檔案

SVG:渲染為 svg 檔案

Cairo:使用 Cairo 引擎渲染

可互動型

Qt5Agg:使用 Qt5 渲染,IPython 中可使用 %matplotlib qt5

Qt4Agg:使用 Qt4 渲染,IPython 中可使用 %matplotlib qt4

ipympl:使用 ipympl 庫,Ipython 中可使用 %matplotlib ipympl

macosx:使用 Cocoa 畫布渲染,Ipython 中可使用 %matplotlib osx

nbAgg:Jupyter Notebook 中使用的 backend,Jupyter 中使用 %matplotlib notebook 來啟用

WXAgg:使用 wxWidgets 庫來渲染,Ipython 中可使用 %matplotlib wx

inline:嚴格地講並不是一個 backend,這個 IPython 中的一個語法,表示把圖表嵌入筆記中,使用 %matplotlib inline

以上這篇jupyter notebook 實現matplotlib圖動態重新整理就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。