Matplotlib數據可視化!

2021-02-20 Datawhale

數據可視化,就是指將結構或非結構數據轉換成適當的可視化圖表,然後將隱藏在數據中的信息直接展現於人們面前。相比傳統的用表格或文檔展現數據的方式,可視化能將數據以更加直觀的方式展現出來,使數據更加客觀、更具說服力。

數據可視化已經被用於工作科研的方方面面,如工作報表、科研論文等,成為了不可或缺的基礎技能。現在,就讓我們一起來學習下數據可視化的基礎知識。

一、 常用可視化工具

Python有許多用於數據可視化的庫,例如常見的有seaborn、pyecharts(echarts的Python版本)、ggplot(移植於R語言的ggplot2,但是有些差別,Python有其他方法可以調用R語言的ggplot2)、bokeh、Plotly(同時支持Python和R語言)等等,這些大多是基於Matplotlib進行開發封裝的。

Matplotlib是一個Python 2D繪圖庫(使用Matplotlib發布的mpl_toolkits庫可以畫3D圖形 ),能夠以多種硬拷貝格式和跨平臺的交互式環境生成出版物質量的圖形,用來繪製各種靜態,動態,交互式的圖表。

Matplotlib 是 Python 最著名的繪圖庫,它提供了一整套和 MATLAB 相似的命令 API,十分適合交互式地進行製圖。而且也可以方便地將它作為繪圖控制項,使用在Python腳本,Python和IPython Shell、Jupyter notebook,Web應用程式伺服器和各種圖形用戶界面工具包等上面。

二、 Matplotlib 初識1. 例子

Matplotlib的圖像是畫在figure(如windows,jupyter窗體)上的,每一個figure又包含了一個或多個axes(一個可以指定坐標系的子區域)。最簡單的創建figure以及axes的方式是通過pyplot.subplots命令,創建axes以後,可以使用Axes.plot繪製最簡易的折線圖。

聲明:以下使用的是IPython Shell

%matplotlib  # 在IPython Shell調用Matplotlib繪圖接口,需要加這行代碼
import matplotlib.pyplot as plt
import numpy as np
 
fig, ax= plt.subplots()  # 創建一個包含一個axes的figure
 # 繪圖
ax.plot([1, 2, 3, 4], [1, 4, 3, 2])  

這裡有一個小知識點,很小很小,但是對於剛剛接觸數據可視化的新手可能容易弄混。ax.plot([1, 2, 3, 4], [1, 4, 3, 2]) 這句代碼裡面第一個參數是數據集裡各個數據點的X值的集合,第二個參數數據集裡各個數據點的Y值的集合。所以這裡輸入的參數值並不是數學上常見的成對坐標點如(x1,y1)、(x2,y2)、...、(xn,yn)的格式,而是 (x1,x2,...,xn)和(y1,y2,...,yn)

2. 例子

和MATLAB命令類似,你還可以通過一種更簡單的方式繪製圖像,matplotlib.pyplot 方法能夠直接在當前axes上繪製圖像,如果用戶未指定axes,matplotlib會幫你自動創建一個。所以上面的例子也可以簡化為以下這一行代碼。

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])  

這裡有個trick(坑)需要注意一下。如上所示,在IPython或jupyter notebook的同一個代碼框中,如果不對其聲明畫在哪個圖上(可以使用 plot() 函數裡面的 ax 參數進行指定),就會自動畫到最後一個創建的圖上(即最後一個Figure對象的最後一個Axes子圖裡)。
plt.figure()  # 創建一個新的Figure對象
plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) 

更多例子可以在Matplotlib官網查看:
https://matplotlib.org/gallery/index.html三、 Matplotlib 全貌

現在我們來深入看一下figure的組成。通過一張figure解剖圖,我們可以看到一個完整的matplotlib圖像通常會包括以下四個層級,這些層級也被稱為容器(container),下一節會詳細介紹。在matplotlib的世界中,我們將通過各種命令方法來操縱圖像中的每一個部分,從而達到數據可視化的最終效果,一副完整的圖像實際上是各類子元素的集合。

Axes:matplotlib宇宙的核心,容納了大量元素用來構造一幅幅子圖,一個figure可以由一個或多個子圖組成。

Axis:axes的下屬層級,用於處理所有和坐標軸,網格有關的元素。

Tick:axis的下屬層級,用來處理所有和刻度有關的元素。

四、 Matplotlib 繪圖接口

matplotlib提供了兩種最常用的繪圖接口

顯式創建figure和axes,在上面調用繪圖方法,也被稱為OO模式(object-oriented style)。依賴pyplot自動創建figure和axes,並繪圖。

使用第一種繪圖接口,是這樣的:

x = np.linspace(0, 2, 100)

fig, ax = plt.subplots()  
ax.plot(x, x, label='linear')  
ax.plot(x, x**2, label='quadratic')  
ax.plot(x, x**3, label='cubic')  
ax.set_xlabel('x label') 
ax.set_ylabel('y label') 
ax.set_title("Simple Plot")  
ax.legend() 

而如果採用第二種繪圖接口,繪製同樣的圖,代碼是這樣的:
plt.figure()  IPython 裡面需要加這行,jupyter notebook則不用,原因見<2.2 例子2>。
x = np.linspace(0, 2, 100)

plt.figure()  # IPython裡面需要加這行,jupyter notebook則不用
plt.plot(x, x, label='linear') 
plt.plot(x, x**2, label='quadratic')  
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()

五、 討論在工作或學習中通常何時會用到數據可視化,希望通過可視化達到什麼目的?

個人經驗:

① 在機器學習中,數據可視化經常用於各種算法模型擬合效果的直觀展示

例子1:線性回歸模型的擬合效果。

例子2:機器學習聚類算法的K-MEANS算法和DBSCAN算法對數據集劃分類別的效果對比。
下圖來源:K-MEANS可視化網站https://www.naftaliharris.com/blog/visualizing-k-means-clustering/

下圖來源:DBSCAN算法可視化網站https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/


② 在數據分析和數據挖掘中經常用來檢查數據的分布,以及窺探數據集內在的規律或事件發展的規律。以下是個人在數據分析和數據挖掘中使用到數據可視化的2個案例。
例1:使用黃氏曲線評估零售店促銷活動效果
例2:Kaggle項目:Predict Future Sales(商品未來銷量預測)

參考連接:(數據可視化開源教程)

https://github.com/datawhalechina/fantastic-matplotlib

相關焦點

  • Python 數據可視化matplotlib
    很多python數據可視化看起來都比正常的數據分析更加立體,如何做出這種數據分析的,或者說是python數據可視化呢?
  • Matplotlib:數據可視化利器
    Matplotlib:數據可視化利器來源: https://towardsdatascience.com/matplotlib-making-data-visualization-interesting-8bac1eb3d25c作者: Karan Bhanot翻譯:老齊數據可視化是理解數據並從中得出推論的關鍵步驟,雖然我們可以逐行地仔細檢查數據
  • 【乾貨】Python使用matplotlib實現數據可視化
    數據可視化是數據科學中的一個重要部分。創建可視化很簡單,但是創建優秀的可視化很難。數據可視化有兩種主要用途:探索數據和交流數據。現在有很多工具都可以用來可視化數據,比如我們常用的Excel,還有數據科學另一門重要的語言R,以及百度的Echarts等可視化工具。
  • Python-matplotlib 空間柵格數據可視化
    在地理空間數據可視化繪製方面也還是有一定的優勢的,為更新colorbar繪製應用範圍,我們把gis,遙感等專業的需要常做的空間可視化圖,試著用matplotlib 進行繪製(也是小夥伴提出:用arcgis等軟體在對多子圖繪製colorbar時,存在無法共用的情況,即軟體是一幅一幅的出圖,導致匯總對比時,colorbar不統一,影響對比分析)本次的tif數據需要用到專門的庫進行讀取,即使用gdal進行
  • 手把手教你用Matplotlib進行數據可視化
    http://matplotlib.org就像我們用縮寫np來表示NumPy一樣,我們也會用一些標準的縮寫來表示Matplotlib導入:import matplotlib.pyplot as pltplt是我們最常用的一個接口。
  • Python數據可視化,無法繞過的matplotlib基礎知識!!!
    matplotlib是python優秀的數據可視化庫,python數據分析必備利器,本文專門為你整理了matplotlib詳細使用方法,來學習吧!--- 以下是正文 ---數據可視化非常重要,因為錯誤或不充分的數據表示方法可能會毀掉原本很出色的數據分析工作。
  • 數據可視化之matplotlib介紹
    Matplotlib 是一個基於python 的繪圖庫,完全支持二維圖像,有限支持三維圖形,Matplotlib是python程式語言及其數據科學擴展包
  • 數據可視化:Matplotlib vs ggplot2
    呈現一個看起來像5歲小孩的東西已經不再是一個選擇,所以數據科學家需要一個有吸引力和簡單易用的數據可視化庫。今天我們將比較其中的兩個-Matplotlib和ggplot2。為什麼是這兩個?Matplotlib是我學習的第一個可視化庫。
  • Python數據可視化工具:Matplotlib學習筆記(一)
    今天要跟大家分享的內容📒是關於Python數據可視化方面的內容。Python在數據處理方面真的太厲害了,所以總結了部分筆記,分享給大家一起學習。簡介matplotlib是什麼?matplotlib是用python開發的可視化和分析工具,是一款非常強大的python畫圖工具。
  • 基於Seaborn+Matplotlib的數據可視化指南
    第一個是基於狀態的:import matplotlib.pyplot as pltplt.figure()plt.plot([0, 1], [0, 1],'r--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.0])plt.title('Test figure') plt.show(
  • Matplotlib--用Python創建各種數據可視化圖形
    前言數據可視化是與他人共享數據的重要方法。有些人將可視化稱為圖解、圖表或圖形。在本文中,這些名稱是同義詞。
  • Python Matplotlib--Excel數據的繪圖可視化(一)
    前面介紹了關於數據處理的numpy庫和pandas庫,在數據處理完之後我們通常需要對數據進行可視化,通過圖形直觀的看出數據的分布變化趨勢等
  • Matplotlib可視化菜鳥教程
    可以說是Python最聲名遠揚的可視化庫了,也是Python數據分析庫的「三駕馬車」之一。基礎圖表繪製數據可視化從目的來說,是為了更直觀展示數據或數據之間的對比、分布或關聯關係。散點圖、折線圖、柱狀圖、條形圖、餅圖、直方圖是非常常用而基礎的可視化圖。個人認為通過畫這幾種基礎圖並調細節是很好的學可視化實踐。
  • 用matplotlib實現數據可視化
    我們衷心祝願,炒股的抓到牛股,買基金的買到牛基,大家都能有滿意的回報。在前面的兩篇文章中,我主要總結了關於numpy和pandas的基本用法和使用實例,為了更加清晰明了的顯示數據的內容,本節內容主要分享關於matplotlib可視化庫的使用方法。
  • 數據可視化工具對比Matplotlib vs ggplot2
    呈現一個看起來像5歲小孩的東西已經不再是一個選擇,所以數據科學家需要一個有吸引力和簡單易用的數據可視化庫。今天我們將比較其中的兩個-Matplotlib和ggplot2。為什麼是這兩個?Matplotlib是我學習的第一個可視化庫。
  • 高效使用 Python 可視化工具 Matplotlib
    基本前提如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:學習基本的matplotlib術語,尤其是什麼是圖和坐標軸始終使用面向對象的接口,從一開始就養成使用它的習慣用基礎的pandas繪圖開始你的可視化學習用seaborn進行更複雜的統計可視化用matplotlib來定製
  • 【數據分析】Matplotlib
    :繪圖和可視化1、簡介Matplotlib是一個強大的Python繪圖和數據可視化的工具包。數據可視化也是我們數據分析的最重要的工作之一,可以幫助我們完成很多操作,例如:找出異常值、必要的一些數據轉換等。完成數據分析的最終結果也許就是做一個可交互的數據可視化。
  • Python數據可視化——matplotlib使用
    %matplotlib inlineimport matplotlib.pyplot as pltfrom numpy.random import randnimport numpy as npfig=plt.figure()ax1=fig.add_subplot
  • 可視化技能之Matplotlib(下)|可視化系列02
    本篇繼續探索Matplotlib的強悍可視化能力。Matplotlib動態可視化計算機及通信技術的發展極大豐富了多媒體內容的發展,文不如圖、圖不如動圖;BI近些年也逐漸發展,人們已不滿足於看靜態的圖表。短視頻的火熱也給了動態圖更多的發展空間。動態圖和交互圖表能更生動地表現數據變化、展現數據關聯,傳達更多的信息。插入排序的動態展現生動的動畫有助於我們理解算法。
  • Python使用matplotlib實現數據可視化教程
    目前有很多工具都可以數實現據可視化,今天我們的主角是Python中的matplotlib庫,相對來說,matplotlib功能不是最強大的,但是對於基本的圖形來說