在matplotlib创建的图像中,包含了多种元素,示例如下 1. figure figure是图片的载体,可以看做是画布,图片必须在画布的基础上进行创建 2. axes axes表示绘图区域或者窗口,用来容纳一张具体的图片。axes位于figure上,同一个figure上可以存在多个axes。 3. axis axis表示坐标轴,比如常见的x轴,y轴以及对应的刻度线和标签。 4. artist atrist表示广义的绘图元件,往大了说,figure, axes, axis都属于绘图元件,往小了说,图片标题,图例,刻度,刻度标签等一幅图像上的具体元素都属于绘图元件。 在matplotlib中,有两套绘图语法,第一种是官方推荐的语法,是一种基于面向对象风格的语法,基本用法如下 import matplotlib.pyplot as plt 这种写法看上去非常的死板,但是在生成复杂图表时,更加的灵活。对于简单的图表,也支持以下写法 plt.plot([1, 2, 3, 4], [1, 2, 3, 4]) 上述代码生成的图片和之前的代码是一致的,只不过这里不再需要显示的声明一个figrue和axes对象,而是直接通过matplotlib.pyplot模块来创建简单图表,从代码量来看,更加的简洁。 在matplotlib.pyplot子模块中,实现了matplotlib.axes对象的各种方法,而且隐式的创建了figure和axes对象,调用更加的简单,对于一幅简单图表而言,使用matplotlib.pyplot会带来代码量的简化。 在R语言中,首先需要创建一个图形设备,比如png或者pdf, 绘图代码执行完毕之后,将对应的结果输出到绘图设备,然后保存。在matplotlib中,对应的顺序进行了调整,先执行绘图代码,然后将结果输出到对应的绘图设备,在这里,绘图设备称之为backend。 同样的一段绘图代码,在输出图像时可能输出到png, pdf等各种不同的设备上。对于不同的绘图设备,matplotlib内置了输出代码,作为使用者的我们,不用关系具体的实现过程,只需要根据自己的需求,调整对应的backend即可。 backend可以分为两类: 1. 交互式设备,比如qt,wxpython等GUI窗口 2. 非交互式设备,比如png, jpeg, pdf等各种格式的文件 matplotlib支持的交互式设备列表如下 非交互式设备列表如下 matplotlib模块有内置的backend, 当然也允许我们进行修改,修改的方式有多种,第一种是修改matplotlib的配置文件matplotlibrc, 通过以下代码可以找到该配置文件的位置 >>> import matplotlib 然后在该文件中,修改backend选项的值。第二种是设置环境变量,MPLBACKEND, 在linux系统的修改方式如下 export MPLBACKEND='agg' 第三种是在绘图脚本的开头进行设置,代码如下 import matplotlib 上述3种方式,优先级依次递增。对于交互式图形设备,绘图代码执行完毕之后,运行以下代码来弹出对应的结果 >>> import matplotlib.pyplot as plt 对于非交互式的图形设备,绘图代码执行完毕之后,我们需要通过如下语句,将结果保存到文件中 >>> plt.plot([1,2,3,4], [1, 2, 3, 4]) matplotlib提供了丰富的绘图函数,在后续文章中再详细介绍。 ·end· |
|