上QQ阅读APP看书,第一时间看更新
1.4 matplotlib
matplotlib用于绘图。这里我们展示一下matplotlib绘制二维图像和三维图像的能力。我们先来看一个二维图像的例子:
>>> import numpy as np >>> import matplotlib.pylab as plt >>> x = np.random.random(100) >>> plt.plot(x) >>> plt.show()
上述代码首先加载了numpy模块(matplotlib很适合处理NumPy数据),然后使用np.random. random生成了一个大小为100、取值区间为[0, 1)的随机数组x。最后使用plt.plot给数组x画图,并通过调用plt.show将绘制的图像输出。matplotlib的输出是交互式的。你可以动手试试绘图窗口的各项功能。例如,图1-1展示了Linux环境下绘图窗口的样子。由于画的是一个随机数组,因此每次图像的序列都是不同的,但绘图窗口的功能区是固定的。
图1-1 一个简单的matplotlib绘图窗口
下面我们再来试试三维数组:
>>> from mpl_toolkits.mplot3d import Axes3D >>> import matplotlib.pylab as plt >>> import numpy as np >>> x = np.random.random(20) >>> y = np.random.random(20) >>> z = np.random.random(20) >>> fig = plt.figure() >>> ax = fig.add_subplot(111, projection='3d') >>> ax.scatter(x,y,z) >>> plt.show()
上述代码首先加载了三维坐标组件、matplotlib以及NumPy。然后用NumPy生成了3个取值区间为[0, 1)的随机数组,它们就是我们要画的三维数据点。接下来调用plt.figure和fig.add_subplot以设置三维投影图。参数111告诉matplotlib我们希望所有图片构成1 × 1的网格,并且把当前图片画到第一个格子里,所以111表明只有单张图片。参数projection用于设置三维绘图模式。最后用ax.scatter绘制散点图,并且通过调用plt.show将图片显示出来。使用matplotlib绘制的三维图像与二维图像一样,也是交互式的,可尝试用鼠标旋转图片。