Python科学计算(第2版)
上QQ阅读APP看书,第一时间看更新

1.3.3 绘图与可视化

matplotlib是Python最著名的绘图库,它提供了一整套和MATLAB类似的绘图函数集,十分适合编写短小的脚本程序进行快速绘图。此外,matplotlib采用面向对象的技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用matplotlib将更加有效。

下面的程序绘制隐函数(x2 +y2 -1)3 -x2 y3 =0的曲线,结果如图1-11所示。

图1-11 matplotlib绘制心形隐函数曲线

    x, y = np.mgrid[-2:2:500j, -2:2:500j]
    z = (x**2 + y**2 - 1)**3 - x**2 * y**3
    pl.contourf(x, y, z, levels=[-1, 0], colors=["red"])
    pl.gca().set_aspect("equal")

VTK是一套功能十分强大的三维数据可视化库,TVTK库在标准的VTK库之上用Traits库进行封装。而Mayavi2则在TVTK的基础上添加了一套面向应用的方便工具,它既可以单独作为3D可视化程序使用,也可以很方便地嵌入到TraitsUI编写的界面程序中。在下面的例子中,使用Mayavi绘制如下隐函数的曲面,结果如图1-12所示。

    %%mlab_plot
    from mayavi import mlab
    x, y, z = np.mgrid[-3:3:100j, -1:1:100j, -3:3:100j]
    f = (x**2 + 9.0/4*y**2 + z**2 - 1)**3 - x**2 * z**3 - 9.0/80 * y**2 * z**3
    contour = mlab.contour3d(x, y, z, f, contours=[0], color=(1, 0, 0))