背景图怎么设置?坐标轴怎么设置?坐标轴上的刻度值怎么设置?怎样在PyQt中添加Matplotlib绘图模块?等等
通常情况下,我们可以将一副Matplotlib图像分成三层结构:
- 第一层是底层的容器层,主要包括Canvas(画板)、Figure(画布、图片)、Axes(图表); 一个axes代表一个图表,包含一个plot,一个figure代表一张画布绘制一张图片,一张图片或一张画布可以有多个图表;canvas画板,摆放画布的工具。关系:画板--->画布或图片-->线条、饼图等图片
- 第二层是辅助显示层,主要包括Axis坐标轴、Spines、Tick、Grid、Legend、Title等,该层可通过set_axis_off()或set_frame_on(False)等方法设置不显示;
- 第三层为图像层,即通过plot、contour、scatter等方法绘制的图像。
容器层:
容器层主要由Canvas、Figure、Axes组成。
Canvas是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布的工具。通常情况下,我们并不需要对Canvas特别的声明,但是当我需要在其他模块如PyQt中调用Matplotlib模块绘图时,就需要首先声明Canvas,这就相当于我们在自家画室画画不用强调要用画板,出去写生时要特意带一块画板。
Figure是Canvas上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。当我们对Figure大小、背景色彩等进行设置的时候,就相当于是选择画布大小、材质的过程。因此,每当我们绘图的时候,写的第一行就是创建Figure的代码。
Axes是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。一个Figure对象可以包含多个Axes对象,每个Axes都是一个独立的坐标系,绘图过程中的所有图像都是基于坐标系绘制的。
辅助显示层:
辅助显示层为Axes内的除了根据数据绘制出的图像以外的内容,主要包括外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。
该层的设置可使图像显示更加直观更加容易被用户理解,但又并不会对图像产生实质的影响。
图像层
图像层指Axes内通过plot折线图、scatter散点图、hist柱状图、contour轮廓图、bar柱状图、barbs、pie饼图等函数根据数据绘制出的图像。
由此我们可以看出
- Canvas位于最底层,用户一般接触不到
- Figure建立在Canvas之上
- Axes建立在Figure之上
- 坐标轴、图例等辅助信息层以及图像层都是建立在Axes之上
此外,对于辅助信息层和图像层所包含的内容
- 线型的对象均是继承于Line2D的子类
- 文字型的对象均是继承于Text的子类
- 相关设置均可参考父类的设置方法