首页 > 编程笔记 > Python笔记 阅读:5

Matplotlib mpl_toolkits绘制3D图表(附带实例)

3D 图表有立体感,也比较美观,看起来更加“高大上”。下面介绍两种 3D 图表,即 3D 柱形图和 3D 曲面图。

绘制 3D 图表,我们依旧使用 Matplotlib,但需要安装 mpl_toolkits 工具包,使用 pip 安装命令:
pip install --upgrade matplotlib
安装好这个模块后,即可调用 mpl_tookits 下的 mplot3d 类进行 3D 图表的绘制。

【实例 1】绘制3D柱形图,程序代码如下:
# 导入相关模块
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np
fig = plt.figure()  # 创建空画布
axes3d = fig.add_axes(Axes3D(fig))  # 创建3D画布并添加轴
zs = [1, 5, 10, 15, 20]  # 创建列表(z轴数据)
for z in zs:
    x = np.arange(0, 10)  # x轴数据
    y = np.random.randint(0, 30, size=10)  # y轴数据
    # 3D柱形图
    axes3d.bar(x, y, zs=z, zdir='x', color=['r', 'green', 'yellow', 'c'])
plt.show()  # 显示图表
运行程序,结果如下图所示:


图 1 3D柱形图

【实例 2】绘制 3D 曲面图,程序代码如下:
# 导入相关模块
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()  # 创建空画布
axes3d = fig.add_axes(Axes3D(fig))  # 创建3D画布并添加轴
x = np.arange(-4.0, 4.0, 0.125)  # 生成x轴数据
y = np.arange(-3.0, 4.0, 0.125)  # 生成y轴数据

# 对x、y轴数据进行网格化
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2  # 计算z轴数据(高度数据)
# 绘制3D图形
axes3d.plot_surface(X, Y, Z,
                    rstride=1,  # 指定行的跨度
                    cstride=1,  # 指定列的跨度
                    cmap=plt.get_cmap('rainbow'))  # 设置颜色映射
axes3d.set_zlim(-2, 2)  # 设置z轴范围
plt.show()  # 显示图表
运行程序,结果如下图所示:


图 2 3D曲面图

相关文章