第二回:藝術畫筆見乾坤(讀書筆記)
import numpy as np #產生數據
import pandas as pd
import re #正常則表達
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
from matplotlib.patches import Circle, Wedge
from matplotlib.collections import PatchCollection
一、概述?
1. matplotlib的三層api?
matplotlib的原理或者說基礎邏輯是,用Artist對象在畫布(canvas)上繪制(Render)圖形。
就和人作畫的步驟類似:
-
準備一塊畫布或畫紙
-
準備好顏料、畫筆等制圖工具
-
作畫
所以matplotlib有三個層次的API:
matplotlib.backend_bases.FigureCanvas 代表了繪圖區,所有的圖像都是在繪圖區完成的
matplotlib.backend_bases.Renderer 代表了渲染器,可以近似理解為畫筆,控制如何在 FigureCanvas 上畫圖。
matplotlib.artist.Artist 代表了具體的圖表組件,即調用了Renderer的接口在Canvas上作圖。(圖形、文本、線條的設定)
前兩者處理程序和計算機的底層交互的事項,第三項Artist就是具體的調用接口來做出我們想要的圖,比如圖形、文本、線條的設定。所以通常來說,我們95%的時間,都是用來和matplotlib.artist.Artist類打交道的。
2. Artist的分類?
Artist有兩種類型:primitives 和containers。
a.primitive是基本要素,它包含一些我們要在繪圖區作圖用到的標準圖形對象,如曲線Line2D,文字text,矩形Rectangle,圖像image等。
b.container是容器,即用來裝基本要素的地方,包括圖形figure、坐標系Axes和坐標軸Axis。
|
Axes helper method |
Artist |
Container |
|---|---|---|
|
|
|
ax.patches |
|
|
|
ax.lines and ax.patches |
|
|
|
ax.patches |
|
|
|
ax.patches |
|
|
|
ax.images |
|
|
|
ax.lines |
|
|
|
ax.collections |
只用記住第一列的輔助方法進行繪圖即可,而無需關注具體底層使用了哪些類,但是了解底層類有助于我們繪制一些復雜的圖表,因此也很有必要了解。
第一列表示matplotlib中子圖上的輔助方法
第二列表示不同圖表背后的artist類
第三列是第二列的列表容器,例如所有在子圖中創建的Line2D對象都會被自動收集到ax.lines返回的列表中。
浙公網安備 33010602011771號