第二回:艺术画笔见乾坤(读书笔记)
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
返回的列表中。