在 Python 中如何运用 Matplotlib 库绘制三维坐标系及其图像呢?首先,我们需要在 Python 中导入所需的库与模块,并对 notebook 环境进行初步的设置:
- from mpl_toolkits import mplot3d
- %matplotlib inline
- import numpy as np
- import matplotlib.pyplot as plt
上面我们导入了 mpl_toolkits 库中的 mplot3d 模块,这个模块是我们绘制三维图的基础。接下来,我们调用 Matplotlib 的 figure 与 axes 函数,在将参数 projection 的值为 '3d' 时,我们就能在绘图区域构建出一个三维的坐标系:
- fig = plt.figure()
- ax = plt.axes(projection='3d')
联系前几节的知识,我们可以通过调用函数 plot3D 与 scatter3D 在这个坐标系中进行曲线与散点的绘制:
- ax = plt.axes(projection='3d')
- # 构造一组三维曲线数据
- zline = np.linspace(0, 15, 1000)
- xline = np.sin(zline)
- yline = np.cos(zline)
- ax.plot3D(xline, yline, zline, 'gray')
- # 构造一组三维散点数据
- zdata = 15 * np.random.random(100)
- xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
- ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
- ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');
函数 contour3D 用于在三维空间中绘制等高线:
- def f(x, y):
- return np.sin(np.sqrt(x ** 2 + y ** 2))
- x = np.linspace(-6, 6, 30)
- y = np.linspace(-6, 6, 30)
- X, Y = np.meshgrid(x, y)
- Z = f(X, Y)
- fig = plt.figure()
- ax = plt.axes(projection='3d')
- ax.contour3D(X, Y, Z, 50, cmap='binary')
- ax.set_xlabel('x')
- ax.set_ylabel('y')
- ax.set_zlabel('z');
以上内容转自 数析学院,关于如何旋转坐标、绘制网状三维图、彩色三维图等等,可以直接查看原文