天天看点

《Python数据可视化编程实战》——5.2 创建3D柱状图

本节书摘来自异步社区《python数据可视化编程实战》一书中的第5章,第5.2节,作者[爱尔兰]igor milovanović ,颛青山 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把excel和3d图表结合起来。在matplotlib的世界里,这些扩展叫做工具包(toolkits)。工具包是一些关注在某个话题(如3d绘图)的特定函数的集合。

比较流行的工具包有basemap、gtk 工具、excel工具、natgrid、axesgrid和mplot3d。

本节将探索关于mplot3d的更多功能。mpl_toolkits.mplot3工具包提供了一些基本的3d绘图功能,其支持的图表类型包括散点图(scatter)、曲面图(surf)、线图(line)和网格图(mesh)。虽然mplot3d不是一个最好的3d图形绘制库,但是它是伴随着matplotlib产生的,因此我们对其接口已经很熟悉了。

基本来讲,我们仍然需要创建一个图表并把想要的坐标轴添加到上面。但不同的是我们为图表指定的是3d视图,并且添加的坐标轴是axes3d。

现在,我们可以使用几乎相同的函数来绘图了。当然,函数的参数是不同的,需要为3个坐标轴提供数据。

例如,我们要为函数mpl_toolkits.mplot3d.axes3d.plot指定xs、ys、zs和zdir参数。其他的参数则直接传给matplotlib.axes.axes.plot。下面来解释一下这些特定的参数。

1.xs和ys:x轴和y轴坐标。

2.zs:这是z轴的坐标值,可以是所有点对应一个值,或者是每个点对应一个值。

3.zdir:决定哪个坐标轴作为z轴的维度(通常是zs,但是也可以是xs或者ys)。

以下代码演示了我们所解释的概念。

上述代码生成如图5-1所示的图表。

《Python数据可视化编程实战》——5.2 创建3D柱状图

我们需要像在2d世界中那样做相同的准备工作。不同的是,在这里需要指定后端(backend)的种类。然后生成了一些随机数据,例如4年的销售额(2011-2014)。

我们需要为3d坐标轴指定相同的z值。

从颜色映射集合中随机选择一种颜色,然后把它和每一个z-order集合的xs、ys对关联起来。最后,用xs、ys对渲染出柱状条序列。

其他的一些matplotlib的2d绘图函数在这里也是可以用的,例如scatter()和plot()有着相似的接口,但有额外的点标记大小参数。我们对contour、contourf和bar也非常熟悉。

仅在3d中出现的新图表类型有线框图(wireframe)、曲面图(surface)和三翼面图(tri-surface)。

在下面的示例代码中,我们绘制了著名的pringle函数的三翼面图,数学专业上的叫法是双曲面抛物线(hyperbolic paraboloid)。

上面的代码生成如图5-2所示的图形。

《Python数据可视化编程实战》——5.2 创建3D柱状图