1. 程式人生 > >Matplotlib資料視覺化(2):三大容器物件與常用設定

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

 

上一篇部落格中說到,matplotlib中所有畫圖元素(artist)分為兩類:基本型和容器型。容器型元素包括三種:figure、axes、axis。一次畫圖的必經流程就是先建立好figure例項,接著由figure去建立一個或者多個axes,然後通過axes例項呼叫各種方法來新增各種基本型元素,最後通過axes例項本身的各種方法亦或者通過axes獲取axis例項實現對各種元素的細節操控。
本篇部落格繼續上一節的內容,展開介紹三大容器元素建立即通過三大容器可以完成的常用設定。

 

1 figure¶

1.1 建立figure¶

在上文中我們一直提到的figure指的是Figure類的例項化物件,當然我們一般不會直接去例項化Figure類,因為這樣建立的Figure例項物件不能納入序列中共同管理。matplotlib中提供了多種方法建立figure,其中屬pyplot模組中的figure()方法最常用也最方便,下面我們來說說這個方法。
figure方法引數如下:

  • num:整型或字串型別,可選引數,預設為None。這個引數課可以理解為是figure的身份標識,即id。當值為None時,會建立一個figure例項,該例項的num值會在已有基礎上自增;當該引數不為None時,如果與已有的num值重複,則會切換到該figure使其處於啟用狀態,並返回一個該figure的引用;如果傳入的引數為字串,該字串將會被設定為figure的標題。
  • figsize:tuple型別,可選引數,預設為None。通過figsize引數可以設定figure的size,即(width, height),單位為inch。當值為None時,採用預設size。
  • dpi:整型,可選引數,用於設定圖片畫素。
  • facecolor:可選引數,用於設定前景色,預設為白色。
  • edgecolor:可選引數,用於設定邊框顏色,預設為黑色。
  • frameon:bool型別,可選引數,表示是否繪製視窗的圖框,預設是。
  • FigureClass:傳入一個類名,當使用自定義的類例項化figure時使用,預設為matplotlib.figure.Figure。
  • clear:bool型別,可選引數,預設為False。如果值為True的話,如果figure已存在,則會清除該figure的全部內容。
In [2]:
from matplotlib import pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 中文字型支援
In [3]:
fig = plt.figure(figsize=(4,2), facecolor='grey')  # 建立figure
fig.add_axes((0,0,1,1))  # 必須新增axes後才能顯示
plt.show()
   

在jupyter編輯器中,空白的figure是不會顯示的,所以必須在figure中至少新增一個axes。

 

1.2 figure的常用設定¶

1.2.1 set方法通用設定¶

建立figure時的各個引數基本都可以通過figure例項物件中對應的對應的set方法進行修改,例如set_facecolor()用來設定前景色,set_size_inches()用來設定大小等。
設定前景色:

In [4]:
fig = plt.figure(figsize=(4,2))
fig.set_facecolor('grey')  # 設定前景色
plt.plot()
plt.show()
  In [5]:
fig = plt.figure()
fig.set_size_inches(2,3)  # 設定大小
plt.plot()
plt.show()
   

1.2.2 設定figure標題¶

In [6]:
fig = plt.figure(figsize=(4,2))
fig.suptitle("figure title", color='red')  # 設定figure標題
plt.plot()
plt.show()
   

1.2.3 新增文字¶

In [7]:
fig = plt.figure(figsize=(4,2))
fig.text(0.5,0.5,"figure text",color='red')  # 設定figure標題,前兩個引數分別表示到左邊框和上邊框的百分比距離
plt.plot()
plt.show()
   

1.2.4 設定圖例¶

In [8]:
fig = plt.figure(figsize=(5,3))
axes = fig.add_axes((0,0,0.8,1))
x = np.linspace(0, 10, 1000)
line1, = axes.plot(x, np.sin(x))  # 注意,line1後面有個逗號,因為plot()方法返回值是一個列表
line2, = axes.plot(x, np.cos(x))
fig.legend([line1, line2],['sin', 'cos'])
plt.show()
   

1.2.5 設定子圖間距¶

In [9]:
fig, axes = plt.subplots(2,2,facecolor='grey')
fig.subplots_adjust(left=None,   # 設定畫圖區域與figure上下左右邊框的比例距離
                    bottom=None, 
                    right=None, 
                    top=None,
                    wspace=0.3,   # 子圖間水平方向距離
                    hspace=1)     # 子圖間垂直方向距離
plt.show()
   

2 axes¶

axes可以認為是figure這張畫圖上的子圖,因為子圖上一般都是座標圖,所以我更願意理解為軸域或者座標系。

2.1 建立axes¶

一個figure可以有多個axes, 無論是pyplot模組還是figure例項內都定義有多種建立axes的方法。 (1) plt.axes()
plt.axes()是指pyplot模組中的axes()方法,該方法會在當前啟用的figure中建立一個axes,並使建立好的axes處於啟用狀態。當傳入的第一個位置引數為空時,該方法會建立一個佔滿整個figure的axes;通常我們可以傳入一個tuple引數(left, botton, width, height)作為第一個位置引數,tuple中四個元素分別表示與figure左邊框比例距離,邊框寬度佔figure寬度的比例,寬度比例,高度佔figure高度的比例。通過這種方式新增axes時,matplotlib會自動建立一個axes,然後將建立好的axes按照給定的位置和size新增到figure中,最後返回一個axes的引用。

In [10]:
fig1 = plt.figure(figsize=(4,2), facecolor='grey')
ax1 = plt.axes((0.1, 0.1, 0.8, 0.7), facecolor='green')
fig2 = plt.figure(figsize=(4,2), facecolor='yellow')
ax2 = plt.axes((0.1, 0.1, 0.8, 0.8), facecolor='red')  # 這個axes將會被覆蓋在下面
plt.show()
 

相關推薦

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

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

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

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

Matplotlib資料視覺1入門介紹

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

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資料視覺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

勒布朗生涯資料視覺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自帶程式實現

Cesium中級1 - 空間資料視覺

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

AudioContext技術和音樂視覺2

Intro 轉載請註明來源,可以在測試部落格檢視完成效果。 本篇講述如何繪製動態的星空,其實關聯到頻域資料已經沒什麼懸念了。 一、使用Canvas繪圖 1.1 位置和大小 繪製背景的第一要務便是把canvas元素放置在背景這一層次上,避免遮蓋其他元素。 對我而言,個人習慣用c

python --資料視覺

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

關於資料序列2二進位制流示例

將一個物件保寫進2進位制流,儲存在檔案中,然後從檔案中恢復物件 問題:  像這樣大家覺的直接writeInt(),writeByt();用來跟客戶端通訊和做持久化存在硬碟有什麼問題嗎 protobuf哪裡能看出來是省資源了,他的原理不也是格式化儲存嗎 難

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

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

PYTHON資料視覺seaborn

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

kaggle中的視覺House Prices

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

Python 影象處理 OpenCV 2畫素處理 Numpy 操作以及 Matplotlib 顯示影象

![](https://cdn.geekdigging.com/opencv/opencv_header.png) 前文傳送門: [「Python 影象處理 OpenCV (1):入門」](https://www.geekdigging.com/2020/05/17/5513454552/) ## 普通

服務計算2go環境配置學習

Go語言學習 環境配置 使用yum install 使用命令sudo yum install -y golang 直接下載安裝包 環境:騰訊雲主機 Ubuntu 16.04 具體見官方文件。 首先下載安裝包:wget https://studygolang.c

程式語言的發展趨勢及未來方向2宣告式程式設計DSL

這是Anders Hejlsberg(不用介紹這是誰了吧)在比利時TechDays 2010所做的開場演講。由於最近我在部落格上關於語言的討論比較多,出於應景,也打算將Anders的演講完整地聽寫出來。在上一部分中,Anders指出語言本身在過去的數十年裡並沒有明顯的發展,並給出了他眼中程式語言發展趨勢的預測