图像的坐标轴是一个很有用的调试工具;但是,如果你想绘制出较美观的图像,加上下列命令可以使坐标轴不显示:
axis(\'off\')上面的命令将绘制出如图 1-2 右边所示的图像。
图 1-2:Matplotlib 绘图示例。带有坐标轴和不带坐标轴的包含点和一条线段的图像
在绘图时,有很多选项可以控制图像的颜色和样式。最有用的一些短命令如表 1-1、表 1-2 和表 1-3 所示。使用方法见下面的例子:
plot(x,y) # 默认为蓝色实线 plot(x,y,\'r*\') # 红色星状标记 plot(x,y,\'go-\') # 带有圆圈标记的绿线 plot(x,y,\'ks:\') # 带有正方形标记的黑色虚线表1-1:用PyLab库绘图的基本颜色格式命令
颜色
\'b\'
蓝色
\'g\'
绿色
\'r\'
红色
\'c\'
青色
\'m\'
品红
\'y\'
黄色
\'k\'
黑色
\'w\'
白色
表1-2:用PyLab库绘图的基本线型格式命令
线型
\'-\'
实线
\'--\'
虚线
\':\'
点线
表1-3:用PyLab库绘图的基本绘制标记格式命令
标记
\'.\'
点
\'o\'
圆圈
\'s\'
正方形
\'*\'
星形
\'+\'
加号
\'x\'
叉号
1.2.2 图像轮廓和直方图
下面来看两个特别的绘图示例:图像的轮廓和直方图。绘制图像的轮廓(或者其他二维函数的等轮廓线)在工作中非常有用。因为绘制轮廓需要对每个坐标 [x, y] 的像素值施加同一个阈值,所以首先需要将图像灰度化:
from PIL import Image from pylab import * # 读取图像到数组中 im = array(Image.open(\'empire.jpg\').convert(\'L\')) # 新建一个图像 figure() # 不使用颜色信息 gray() # 在原点的左上角显示轮廓图像 contour(im, origin=\'image\') axis(\'equal\') axis(\'off\')像之前的例子一样,这里用 PIL 的 convert() 方法将图像转换成灰度图像。
图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用 hist() 函数绘制:
figure() hist(im.flatten(),128) show()hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。flatten() 方法将任意数组按照行优先准则转换成一维数组。图 1-3 为等轮廓线和直方图图像。
图 1-3:用 Matplotlib 绘制图像等轮廓线和直方图
1.2.3 交互式标注