目录
1.matplotlib 的架构分层
在python中一切皆对象,这个API也是如此。matplotlib是用来对数据绘图的,这里就可以按照对象的思维或者说绘画的步骤来了解该API的架构。绘制的工具需要“纸墨笔砚”和绘制的执笔者。
所以它的架构是这样的:
英文版
- matplotlib.backend_bases.FigureCanvas
- matplotlib.backend_bases.Renderer
- matplotlib.artist.Artist
- matplotlib.backend_bases.Renderer
中文理解
- 顶层——绘制区——理解为绘画中所需要的的画板以及画板上放的纸
- 次层——渲染区——理解为绘画中执笔者所需要的工具,如笔,颜料,度量器等
- 末层——执笔者——理解为绘画中的绘画者,他可以调用绘制过程所需的一切工具
- 次层——渲染区——理解为绘画中执笔者所需要的工具,如笔,颜料,度量器等
2.无处不在的Artist对象
首先我们得明白这样一个事实:图形中的所有可见元素都是Artist的子类
我们这样想就容易理解了——我们自己就是绘制这幅图的Artist,就是这幅图的执笔者,我们对于自己的画作可随意创作,也可“有意为之”’,比如线条变粗一点,圆形的透明度淡一点,Y轴上的标签放在左侧而不是右侧等等
图形中的所有可见元素,都有一个Artist对象,而这些元素的配置属性,可以通过Artist对象去调节他们的属性。具象一点,在绘画这个场景中,我们作为执笔者在绘画的过程中,是可以自主决定使用或者不使用每一样工具,使用每一样工具的哪一些功能和使用的程度等。所以每个可见元素,都有一个Artist对象也就不奇怪了,两者是使用者和被使用者支配的关系,被使用者支配的东西就是该元素的属性。
每个matplotlib Artist 都有以下属性:
- alpha 属性:透明度。值为0—1之间的浮点数
- axes 属性:返回这个Artist所属的axes,可能为None
- figure 属性:该Artist所属的Figure,可能为None
- label :一个text label
- visible :布尔值,控制Artist是否绘制
3.matplotlib中的容器
讲容器container就会涉及到primitives基础元素。可以这样理解容器和基础元素,装元素的东西是容器,容器里面放的东西是基础元素。具象一点,画包里面装的是各种绘画所需的工具,这里的包是容器,工具是基础元素。而容器非单一的,是可嵌套的,包里有笔盒,笔盒里有彩色笔。这里的笔盒又是一个容器,彩色笔是基础元素。
如下图所示,每个单元都是一个容器,由层级图所示,容器中又嵌套着其他容器。除了通过容器找到容器里所包含的元素以外,每个容器自身的属性也是可以调节的。这就好比改变自己背包的款式颜色,而里面装的东西不变。
3.1 Figure容器
它是最顶级的对象容器,它包含了图表中的所有元素。而该容器本身常见的属性如下:
- Figure.patch 属性:Figure的背景矩形
- Figure.axes 属性:一个Axes实例的列表(包括Subplot)
- Figure.images 属性:一个FigureImages patch列表
- Figure.lines 属性:一个Line2D实例的列表(很少使用)
- Figure.legends 属性:一个Figure Legend实例列表(不同于Axes.legends)
- Figure.texts 属性:一个Figure Text实例列表
3.2 Axes容器
该容器是该API中最核心的地方。Axes 有许多方法用于绘图如.plot()、.text()、.hist()、.imshow() 等方法用于创建大多数常见的 基础元素。该容器本身常见的属性如下:
- artists : Artist实例列表
- patch : Axes所在的矩形实例
- collections : Collection实例
- images : Axes图像
- legends : Legend 实例
- lines : Line2D 实例
- patches : Patch 实例
- texts : Text 实例
- xaxis : matplotlib.axis.XAxis 实例
- yaxis : matplotlib.axis.YAxis 实例
3.3 Axis容器
Axis 实例处理 tick line 、 grid line 、 tick label 以及 axis label 的绘制,它包括坐标轴上的刻度线、刻度 label 、坐标网格、坐标轴标题等
3.4 Tick容器
该容器是最外层的容器,它 包含了 tick 、 grid line 实例以及对应的 label。该容器本身常见的属性如下:
- Tick.tick1line :Line2D实例
- Tick.tick2line :Line2D实例
- Tick.gridline :Line2D实例
- Tick.label1 :Text实例
- Tick.label2 :Text实例
4.基础元素
待写
资料:
1.Datawhale的 数据可视化教程