matplotlib繪圖的核心原理講解

2021-01-08 CSDN

作者:朱小五

來自:凹凸數據(ID:alltodata)

matplotlib是基於Python語言的開源項目,旨在為Python提供一個數據繪圖包。

相信大家都用過它來數據可視化,之前我還分享過25個常用Matplotlib圖的Python代碼。

可是你了解過它繪圖的核心原理嗎?

那不如來看看黃同學的這篇文章吧!

核心原理講解

使用matplotlib繪圖的原理,主要就是理解figure(畫布)、axes(坐標系)、axis(坐標軸)三者之間的關係。

以「美院學生張三寫生畫畫」為例,來說明這三者之間的關係。

張三的畫板

首先,張三想要畫畫,是不是需要在畫板上面準備一張畫布。對比到matplotlib中,就相當於初始化了一張figure(畫布),我們畫的任何圖形,都是在這張figure(畫布)上操作的。

接著,張三需要給figure(畫布)分配不同的區域,指定哪一塊兒究竟該畫什麼。對比到matplotlib中,就是需要指定axes(坐標系),每一個axes(坐標系)相當於一張畫布上的一塊區域。一張畫布上,可以分配不同區域,也就是說,一張畫布,可以指定多個axes(坐標系)。

最後,張三就是在分配好的不同區域上進行圖形繪製了,在一張畫布上,畫的最多的應該就是2D圖,也可以畫3D圖,如圖所示,張三在區域一畫了一個小狗,在區域二畫了一個小貓,在區域三畫了一個光頭強。對比到matplotlib中,我們在axes1中畫了一個條形圖,在axes2中畫了一個餅圖,在axes3中畫了一個折線圖。當是2D圖時,都會有一個X軸和一個Y軸;當是3D圖時,都會有一個X軸、一個Y軸和一個Z軸,這個軸就是我們所說的「坐標軸axis」。

matplotlib繪圖

通過上述分析,總結如下:一個figure(畫布)上,可以有多個區域axes(坐標系),我們在每個坐標系上繪圖,也就是說每個axes(坐標系)中,都有一個axis(坐標軸)。

特別注意:在matplotlib中,figure畫布和axes坐標軸並不能顯示的看見,我們能夠看到的就是一個axis坐標軸的各種圖形。

matplotlib庫的安裝與導入

1)安裝

pip install matplotlib

2)導入相關庫

現在你不需要關注下面代碼具體是什麼意思,有一個主觀印象即可。我將會在以後的文章中,給大家一一介紹你不懂的哪些參數。

import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as plt# 排除警告信息import warningswarnings.filterwarnings("ignore")# 列印版本信息display(np.__version__)display(pd.__version__)display(mpl.__version__)# matplotlib畫圖常見參數設置mpl.rcParams["font.family"] = "SimHei" # 設置字體mpl.rcParams["axes.unicode_minus"]=False # 用來正常顯示負號plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標籤# 嵌入式顯示圖形%matplotlib inline

結果如下:

創建figure(畫布)的兩種方式

1)繪製一個最簡單的折線圖

import matplotlib as mplimport matplotlib.pyplot as pltx = [1,3,5,7]y = [4,9,6,8]plt.plot(x,y)plt.show()

結果如下:

結果分析:

在前面的敘述中,我們已經說過,想要使用matplotlib繪圖,必須先要創建一個figure(畫布)對象,然後還要有axes(坐標系)。但是觀察上述代碼,我們並沒有創建figure對象,那麼怎麼又可以畫圖呢?

對於上述疑問,接下來我們就要講述創建figure(畫布)的兩種方式。

2)創建figure(畫布)的兩種方式

* 隱式創建* 顯示創建

① 隱式創建figure對象

當第一次執行plt.xxx()畫圖代碼時,系統會去判斷是否已經有了figure對象,如果沒有,系統會自動創建一個figure對象,並且在這個figure之上,自動創建一個axes坐標系(注意:默認創建一個figure對象,一個axes坐標系)。

也就是說,如果我們不設置figure對象,那麼一個figure對象上,只能有一個axes坐標系,即我們只能繪製一個圖形。

② 隱式創建figure對象存在的問題

優勢:如果只是繪製一個小圖形,那麼直接使用plt.xxx()的方式,會自動幫我們創建一個figure對象和一個axes坐標系,這個圖形最終就是繪製在這個axes坐標系之上的。

劣勢:如果我們想要在一個figure對象上,繪製多個圖形,那麼我們就必須拿到每個個axes對象,然後調用每個位置上的axes對象,就可以在每個對應位置的坐標繫上,進行繪圖,如下圖所示。注意:如果figure對象是被默認創建的,那麼我們根本拿不到axes對象。因此,需要我們顯示創建figure對象。

③ 顯示創建figure對象:以後的文章會詳細講述布局設置

# 手動創建一個figure對象figure = plt.figure()# 獲取每個位置的axes對象axes1 = figure.add_subplot(2,1,1)axes2 = figure.add_subplot(2,1,1)

如圖所示:

舉例說明:

figure = plt.figure()axes1 = figure.add_subplot(2,1,1)axes2 = figure.add_subplot(2,1,1)axes1.plot([1,3,5,7],[4,9,6,8])axes2.plot([1,2,4,5],[8,4,6,2])figure.show()

結果如下:

完整的繪圖步驟

① 導庫

import matplotlib as mplimport matplotlib.pyplot as plt

② 創建figure畫布對象

如果繪製一個簡單的小圖形,我們可以不設置figure對象,使用默認創建的figure對象,當然我們也可以顯示創建figure對象。如果一張figure畫布上,需要繪製多個圖形。那麼就必須顯示的創建figure對象,然後得到每個位置上的axes對象,進行對應位置上的圖形繪製。

③ 根據figure對象進行布局設置

1*11*22*12*2...

④ 獲取對應位置的axes坐標系對象

figure = plt.figure()axes1 = figure.add_subplot(2,1,1)axes2 = figure.add_subplot(2,1,1)

⑤ 調用axes對象,進行對應位置的圖形繪製

這一步,是我們傳入數據,進行繪圖的一步。對於圖形的一些細節設置,都可以在這一步進行。

⑥ 顯示圖形

plt.show()或figure.show()如果在pycharm中繪圖的話,必須要加這句代碼,才能顯示。如果在notebook中進行繪圖,可以不用加這句代碼,而是自動顯示。

繪圖技巧(細節設置)

通過對matplotlib繪圖的原理,有所了解之後,我們需要學習的就是常見的matplotlib繪圖技巧。

* figure 畫布* axes 坐標系,一個畫布上可以有多個坐標系* axis 坐標軸,一個坐標系中可以有多個坐標軸,一般都是二維平面坐標系,或者三維立體坐標系* title 標題* legend 圖例* grid 背景網格* tick 刻度* axis label 坐標軸名稱* tick label 刻度名稱* major tick label 主刻度標籤 * minor tick label 副刻度標籤* line 線* style 線條樣式* marker 點標記* font 字體相關

常見的繪圖技巧如上所示,這些繪圖技巧都能夠很好的幫助我們畫出更美觀、更直觀的圖形。

相關焦點

  • 30分鐘入門 Matplotlib 繪圖
    Matplolib最初主要模仿Matlab的畫圖命令,但是它是獨立於Matlab的,可以自由、免費使用的繪圖包。Matplotlib依賴於之前介紹的Numpy庫來提供出色的繪圖能力。pip install matplotlib如果安裝失敗,可以使用國內的鏡像來安裝Matplotlib庫,如下所示。
  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。很多其它的python繪圖庫是基於matplotlib開發的,比如seaborn、ggplot、plotnine、holoviews、basemap等。matplotlib可用於python腳本、python shell、jupyter notebook、web等。
  • Python 繪圖庫 Matplotlib 入門教程
    /Matplotlib是一個Python語言的2D繪圖庫,它支持各種平臺,並且功能強大,能夠輕易繪製出各種專業的圖像。筆者推薦大家通過pip的方式進行安裝,具體方法如下:sudo pip3 install matplotlib本文的代碼在如下環境中測試:Apple OS X 10.13Python 3.6.3matplotlib 2.1.1
  • Matplotlib繪圖|快速定義圖表樣式的小技巧
    Matpltlibrc file 設置圖表屬性Matplotlib 在繪圖過程中,每創建一個圖表,都要對該圖表內的樣式(例如 字體大小、顏色、解析度、橫縱坐標刻度、橫縱坐標標籤)設置一次,重複乏味,如下展示的是一個正弦函數曲線X =np.linspace(-np.pi,np.pi,256,endpoint =True)S = np.sin(X)plt.plot
  • 見識matplotlib:不常見的一面,折線圖!
    眾所周知,matplotlib是python繪圖的基礎包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網首頁作為例子的幾張圖,大家感受一下:什麼?醜拒?不不不,別激動!其實matplotlib一直是一個低調奢華有內涵的包,需要我們透過它樸實無華的外表認清它豐富多彩的內在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?
  • Python數據可視化技能提升—用好matplotlib第1篇
    Python想必已經是大家最為熟悉不過的程式語言了,得益於它的易上手性,以及強大的兼容性和開源性,已經受到了廣泛「程序猿」的喜愛哦,通過前面幾次,咱們已經把Python的前世今生和Python的模塊化編程聊完了,這兩天收到朋友的私信說想了解點Python數據可視化相關的東東,俺想了下,就這樣好啦,以後呢,就把Python的基礎知識和實戰的專業知識點進行穿插講解啦,這樣既能讓入門的朋友快速熟悉
  • 手把手教你用Matplotlib進行數據可視化
    http://matplotlib.org就像我們用縮寫np來表示NumPy一樣,我們也會用一些標準的縮寫來表示Matplotlib導入:import matplotlib as mpl   import matplotlib.pyplot as plt plt是我們最常用的一個接口。
  • matplotlib的Python數據可視化和探索——入門指南
    matplotlib——最受歡迎的Python庫,用於數據可視化和探索我喜歡在Python中使用matplotlib。這是我學會掌握的第一個可視化庫,此後一直存在。matplotlib是最受歡迎的用於數據可視化和探索的Python庫,這是有原因的——它提供的靈活性和敏捷性是無與倫比的!
  • 這麼用MatPlotLib視覺化呈現數據,你值得擁有!
    Matplotlib2. Seaborn3. Plotly4. Pandas學習使用這些視覺化工具可促進數據理解、信息提取和決策制定。本文將對Matplotlib工具進行詳細介紹。MatplotlibMatplotlib是一個Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。
  • matplotlib如何實現圖形繪製在tkinter的Canvas中?
    matplotlib如何實現圖形繪製在tkinter的Canvas中?今天番茄加速就來分享一下。下面就是最重要的tkinter和matplotlib集成部分,matplotlib提供FigureCanvasTkAgg對象,只需三行代碼,實現圖形繪製在tkinter的Canvas中:canvas_l = FigureCanvasTkAgg(figure_l, frame_l)# 用draw代替canvas_l.draw()canvas_l.get_tk_widget
  • Python 繪圖,我只用 Matplotlib
    圖1-1 散點圖示例使用Matplotlib的scatter()函數繪製散點圖,其中x和y是相同長度的數組序列。scatter()函數的一般用法為:主要參數說明如下:x,y:數組。s:散點圖中點的大小,可選。c:散點圖中點的顏色,可選。 marker:散點圖的形狀,可選。alpha:表示透明度,在 0~1 取值,可選。
  • python matplotlib畫圖教程學習:使用介紹
    本篇文章介紹matplotlib包使用時,需要掌握的一些基本概念。下圖顯示了matplotlib圖形的基本構成部分,如figure(圖形)、axes(子圖形)、title(標題)、legend(圖例)、Major tick(大標尺刻度)、Minor tick(小標尺刻度)、Major tick label(大標尺刻度數值)、Minor tick label(小標尺刻度數值)、Y axis label(y軸指標說明)、X axis label(x軸指標說明)、Line
  • 未明學院:Python可視化庫Matplotlib繪圖入門詳解
    Matplotlib是Python的繪圖庫,其中的pyplot包封裝了很多畫圖的函數。Matplotlib.pyplot 包含一系列類似 MATLAB 中繪圖函數的相關函數。每個 Matplotlib.pyplot 中的函數會對當前的圖像進行一些修改,例如:產生新的圖像,在圖像中產生新的繪圖區域,在繪圖區域中畫線,給繪圖加上標記,等等…… Matplotlib.pyplot 會自動記住當前的圖像和繪圖區域,因此這些函數會直接作用在當前的圖像上。
  • 看了這個總結,其實 Matplotlib 可視化,也沒那麼難!
    作者 | 舊時晚風拂曉城 來源 | 傑哥的IT之旅(ID:Jake_Internet)頭圖 | CSDN 下載自東方IC公眾號「傑哥的IT之旅」後臺回覆:「matplotlib數據可視化」,獲取本文完整數據集。Python 中可以通過 matplotlib 模塊的 pyplot 子庫來完成繪圖。
  • PyCharm安裝matplotlib教程——安裝好matplotlib但是import報錯
    輸入python -m pip install -U pip setuptools2.輸入python -m pip install matplotlib3.檢查是否已經安裝成功。輸入python -m pip list成功安裝。默認安裝在D:\Python\Lib\site-packages方式二:通過下載matplotlib進行安裝。
  • 使用Matplotlib繪製堆積條形圖
    import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv('../data/vgsales.csv')df.head()我們接下來要將平臺和地區的銷售情況可視化。
  • 使用Matplotlib可視化數據的5個強大技巧
    許多人仍然使用Matplotlib作為後端模塊來可視化他們的圖形。在這個故事中,我將給你一些技巧,使用Matplotlib創建一個優秀圖表的5個強大技巧。1. 使用Latex字體默認情況下,我們可以使用Matplotlib提供的一些不錯的字體。但是,有些符號不夠好,不能由Matplotlib創建。例如,符號phi(φ),如圖1所示。
  • Python可視化:matplotlib的坐標軸和rc參數設置指南!
    這是matplotlib繪製的y = x^2:這是本人親手繪製的y = x^2:(本靈魂畫手已上線,非戰鬥人員請撤離!不要太在意細節哈,忽視那個長的不太協調的x軸和彎彎曲曲如蚯蚓的拋物線,手殘黨表示真的盡力了,意會!意會哈!)正經的說,雖然都是y = x^2的圖像,是不是感覺兩幅圖差異還蠻大的。
  • matplotlib中文顯示之圖表大全
    全局支持中文顯示以及指定局部中文顯示https://aistudio.baidu.com/aistudio/projectdetail/390895使用中還有問題可以在論壇中提出(你的問題可能大家已經討論過了)https://ai.baidu.com/forum/topic/show/958873考慮到部分同學對matplotlib本身不是太熟悉
  • 基於Python的圖表繪圖系統matplotlib,「動態條形圖」你了解嗎?
    查看並選取符合要求數據先看下數據,依然是英超各球隊的積分數據,製作動態條形圖,對數據量要求會稍微大一些,對於有時間維度的數據來說,時間越長,能體現的變化和信息量就會越多,這裡我們只選取了從2010–2019年英超各球隊的積分數據,這個數據量不算大,但是不影響學習原理和實現步驟。