1. 程式人生 > >Matplotlib資料視覺化(1):入門介紹

Matplotlib資料視覺化(1):入門介紹

 

1 matplot入門指南¶

matplotlib是Python科學計算中使用最多的一個視覺化庫,功能豐富,提供了非常多的視覺化方案,基本能夠滿足各種場景下的資料視覺化需求。但功能豐富從另一方面來說也意味著概念、方法、引數繁多,讓許多新手望而卻步。

據我瞭解,大部分人在對matplotlib接觸不深時都是邊畫圖邊百度,諸如這類的問題,我想大家都似曾相識:Python如何畫散點圖,matplotlib怎麼將座標軸標籤旋轉45度,怎麼設定圖例字型大小等等。無論針對哪一個問題,往往都有多種解決方法,搜尋引擎這時候當然會很熱情得將各種五花八門、看似合理、各不相同的解決方案推給我們,對於新手往往就迷失在這些紛雜的答案中,然後覺得matplotlib好複雜。matplotlib設計原則就是追求對每一個圖表細節的完全控制,所以matplotlib原始碼中各種物件很多,甚至各物件間相互應用,錯綜複雜,對同一個物件的設定經常可以呼叫不同的方法來實現,這是matplotlib入門難的原因之一。

對於matplotlib入門階段學習曲線陡峭,我認為還有一個更加重要的原因。無論是在各種出版書籍還是網路部落格中,都少有資料對matplotlib進行深入的系統介紹,大多淺嘗輒止。這些流於表層的資料對於如何用matplotlib作圖沒有進行深入的分析,大多隻介紹如何呼叫pyplot模組中的方法進行作圖。pyplot是matplotlib中提供的一個頂層模組,提供許多方法實現了快速、簡便作圖,幾行程式碼就可以完成一幅圖的創作,但是,這種方法作圖卻讓新手對matplotlib圖形的認識變得粗淺,也很難實現對圖形的更加精細控制,底層定製能力有限,最終讓新手對matplotlib咬牙切齒。這種方法就想吃快餐,快速方便,但是吃多了難免營養不良。

面對matplotlib入門階段的這兩個問題,怎麼辦呢?

matplotlib其實提供了兩類介面實現作圖。第一類基於狀態的介面,就是上文中提到的pyplot進行作圖,這類介面對matplotlib中更加底層的物件進行封裝,以仿MATLAB作圖風格的方式讓作圖更加簡單方便。至於為什麼叫基於狀態,我的觀點是pyplot所有作圖動作都是預設在當前出於啟用的元素上進行,要切換到其他元素作圖,就要使另一元素啟用。第二類介面是基於物件的介面,這種方法是使用買你想物件的方法來作圖,認為圖形中每一個元素都是一種物件,通過呼叫更加底層物件來實現作圖。這種方法程式碼量更多,但是讓使用者對matplotlib圖形的構成有了更深的認識,也讓使用者對圖形的每一個元素有更強的掌控力。

所以,在使用matplotlib作圖過程中,本文建議在學習階段多使用基於物件的方法進行作圖,只要掌握了基於物件的方法作圖,後面使用pyplot作圖自然水到渠成。本文後續大部分介紹也是基於這一種方法。

 

2 安裝與匯入¶

  • 安裝
    matplotlib的安裝與Python中其他第三方庫安裝方法無異,如果你對Python環境管理和庫安裝還不熟悉,可以參考這篇部落格。現在,你可以使用下行命令從豆瓣源中安裝matplotlib:
    $ pip install -i https://pypi.douban.com/simple matplotlib
  • 匯入
    進行匯入操作時通常不會直接將整個matplotlib包匯入,而是匯入matplotlib包中最為常用的pyplot模組,一般的,我們習慣將pyplot匯入時起一個簡稱plt。
In [1]:
import matplotlib.pyplot as plt
 

3 圖的構成¶

在使用matplotlib進行繪圖之前,理解matplotlib圖表構成是非常有必要的。matplotlib圖表有三個非常重要的概念:figure、axes、axies。 三者之間的關係構成了matplotlib圖表的整體佈局,如下圖1所示。

相關推薦

Matplotlib資料視覺1入門介紹

  1 matplot入門指南¶ matplotlib是Python科學計算中使用最多的一個視覺化庫,功能豐富,提供了非常多的視覺化方案,基本能夠滿足各種場景下的資料視覺化需求。但功能豐富從另一方面來說也意味著概念、方法、引數繁多,讓許多新手望而卻步。 據我瞭解,大部分人在對m

Matplotlib資料視覺2三大容器物件與常用設定

  上一篇部落格中說到,matplotlib中所有畫圖元素(artist)分為兩類:基本型和容器型。容器型元素包括三種:figure、axes、axis。一次畫圖的必經流程就是先建立好figure例項,接著由figure去建立一個或者多個axes,然後通過axes例項呼叫各種方法

Matplotlib資料視覺3文字與軸

  在一幅圖表中,文字、座標軸和影象的是資訊傳遞的核心,對著三者的設定是作圖這最為關心的內容,在上一篇部落格中雖然列舉了一些設定方法,但沒有進行深入介紹,本文以圍繞如何對文字和座標軸進行設定展開(對影象的設定在後續介紹到各種圖繪製時介紹)。 這裡所說的文字是指在使用matplot

Matplotlib資料視覺4折線圖與散點圖

In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 中

Matplotlib資料視覺5柱狀圖與直方圖

  柱狀圖和直方圖是兩種非常類似的統計圖,區別在於: 直方圖展示資料的分佈,柱狀圖比較資料的大小。 直方圖X軸為定量資料,柱狀圖X軸為分類資料。因此,直方圖上的每個條形都是不可移動的,X軸上的區間是連續的、固定的。而柱狀圖上的每個條形是可以隨意排序的,有的情況下需要按照分

Matplotlib資料視覺6餅圖與箱線圖

In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 中文字型支

Matplotlib資料視覺7圖片展示與儲存

In [1]: import os import matplotlib.image as mpimg from PIL import Image import matplotlib.pyplot as plt import numpy as np import matplot

Asp.Net MVC4入門指南1 入門介紹

前言 本教程將為您講解使用微軟的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 來建立一個ASP.NET MVC4 Web應用程式所需要的基礎知識。建議您使用Visual Studio 2012,你將不再

Cesium中級1 - 空間資料視覺

#[CesiumJS]Cesium中級1 - 空間資料視覺化(一) Cesium中文網:http://cesiumcn.org/ | 國內快速訪問:http://cesium.coinidea.com/ 本教程將教讀者如何使用Cesium的實體(Entity)API繪製空間資料,如點、標

勒布朗生涯資料視覺Matplotlib製作柱形圖及Figure, Text類和bar函式的引數探索

簡介 本篇文章使用Kaggle.com上的資料集NBA Players stats since 1950中的Seasons_Stats.csv,其包含從1950至今的每個賽季的球員資料,每條資料有53項欄目,是綜合性較強的NBA資料集,我嘗試從中提取勒布朗詹姆

Caffe視覺權重及輸出視覺用Deep Visualization Toolbox實現

Caffe視覺化(二):權重及輸出視覺化(用Deep Visualization Toolbox實現) 本文記錄了博主在研究Caffe權重及輸出視覺化過程中發現的工具包,包括工具包的安裝、使用和調整(以適應自定義網路)的相關內容。更新於2018.10.26。 文章目錄

Caffe視覺網路結構視覺用Caffe自帶程式實現

Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現) 本文記錄瞭如何利用Caffe自帶的程式實現網路的視覺化,包括可能遇到的問題和解決方案。更新於2018.10.25。 文章目錄 Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現

AudioContext技術和音樂視覺1

寫在最前,測試部落格在這裡,直接欣賞完成視覺化效果。程式碼不日在github公開,效能目前巨爛,RadialGradient損耗巨大,優化正在提上日程。 轉載註明來源。 扒掉網頁上js的煩請留下js裡的頂端註釋謝謝。。雖然我程式碼是寫的挺爛的。如果轉發到別的地方了能註明一下作者和來源的話我會

python --資料視覺

一、NumPy 1、簡介:  官網連結:http://www.numpy.org/  NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫 2、基本功能: 快速高效的多維陣列物件ndarray 用於對陣列執行元素級計算以及直

java 資料視覺通過jdbc訪問資料庫,在servlet上獲取資料庫資料

想要通過servlet獲取資料庫資料,首先需要建立jdbc 因為資料是通過無線感測傳到資料庫的,因此jdbc裡只有查詢操作,增刪改的同學可以自行新增。 程式碼中被註釋掉的部分用於測試。 main函式部分用於檢測是否連線上資料庫,並檢測是否能讀到資料,若是讀得到

Python 資料結構筆記1Python資料結構的效能

本系列部落格是閱讀《Problem Solving with Algorithms and Data Structures using Python》的筆記,原文連結 1、列表 List 索引和賦值是兩個非常常用的操作。這個兩個操作不論列表多長,它們的時間複雜

資料結構習題1單鏈表

(部分基於之前的程式碼)  1.設順序表va中的資料元素遞增有序。 試寫一演算法,將x插入到順序表的適當位置上,以保持該表的有序性。 int InsertSort(PDSeqList pl,ELEM_TYPE val) { if(pl == NULL) { ret

PTA 資料結構題目1最大子列和問題分而治之、線上處理演算法

題目來源: 問題描述: 問題分析: 對於一般的問題,原始解 都能通過一種 蠻力演算法,即窮舉法的思想得到。這題也不例外。 如果我們,把輸入的陣列,所有的子列都歷遍,並從中找出最大,即可得出我們的演算法。也就是版本一。 學習要點: 1、如何

PYTHON資料視覺seaborn

線性關係視覺化 許多資料集都有著眾多連續變數。資料分析的目的經常就是衡量變數之間的關係,我們之前介紹了可以繪製雙變數分佈的函式。然而,使用統計模型來估計兩個噪聲觀測組之間的簡單關係可能是非常有幫助的。我們在這一章中討論的函式功能將線上性迴歸的框架實現。 請注

kaggle中的視覺House Prices

kaggle中預測的get started專案,原文連結。 看原文可以入門特徵工程,這裡主要說視覺化部分,用到matplotlib和seaborn。 導庫增加 import seaborn as sns from scipy.stats import