等值线图
等值线图或等高线图在科学界很常用。这种可视化方法用由一圈圈封闭的曲线组成的等值线图表示三维结构的表面,其中封闭的曲线表示的是一个个处于同一层级或z值相同的数据点。
虽然等值线图看上去结构很复杂,其实用matplotlib实现起来并不难。首先,你需要用z=f(x,y)函数生成三维结构。然后,定义x、y的取值范围,确定要显示的区域。之后使用f(x,y)函数计算每一对(x,y)所对应的z值,得到一个z值矩阵。最后,用contour( )函数生成三维结构表面的等值线图。定义颜色表,为等值线图添加不同的颜色,效果往往会更好;也就是说,用渐变色填充由等值线划分成的区域。如下所示,用逐渐加深的蓝色阴影表示负值,而随着数值的增大,则逐渐该用黄色甚至红色。
标准的渐变色组合(颜色表)如上所示,在实际应用中,要从多种颜色中选定你需要的颜色,把它赋给cmap关键字参数。
此外,如若使用等值线图,在该图的一侧增加图例作为对图表中所用颜色的说明几乎是必需的。在代码的最后增加colorbar( )函数即可实现该功能。下面我们将展示的图表会用另外一种颜色表,先是由黑色过渡到红色,再过渡到黄色,最后最大值使用白色。这种彩图中,cmap参数为plt.cm.hot。
极区图
另外一种取得了一定成功的高级图表是极区图。这种图表由一系列呈放射状延伸的区域组成,其中每块区域占据了一定的角度。因此若要用极区图表示两个不同的数值,分别指定它们在极区图中所占的分量;每块区域的半径r和它所占的角度,其实这就是极坐标(r,θ),是在坐标轴系中表示数据的另一种方法。从图表的角度来看,你可以将其视作兼有饼图和条状图特点的图表。之所以说它像饼图,是因为每个区域的角度所表示的是其所属类别占全部类别的比例。至于说它像条状图,是因为半径的长度表示某一类别的数值大小。
到目前为止,我们一直使用标准颜色集,每种颜色用单一字符颜色编码来表示(例如,r代表红色)。事实上。你可以自定义任意的颜色列表,方法是指定颜色列表,其中每个元素为字符串类型的RGB编码,其格式为#rrggbb。
奇怪的是,制作极区图需要使用bar( )函数,把角度θ列表和半径列表传递给它。你讲得到如下所示的极图:
这个例子中,我们定义了一列#rrggbb格式的颜色值,其实还可以用颜色的实际名称来表示颜色。
mplot3d
mplot3d工具集是matplotlib内置的标配,可用来实现3D可视化功能。如果生成的图形在单独的窗口显示,你还可以用鼠标旋转三维图形的轴进行查看。
mplot3d仍然使用Figure对象,只不过Axes对象要替换为该工具集的Axes3D对象。因此,使用Axes3D对象前,需要先将其导入进来。
from mpl_toolkits.mplot3d import Axes3D
下面一节我们将具体介绍实现3D可视化功能的例子。