背景介绍
本文主要介绍两种基于python的三维装箱可视化能力,第一种是基于mpl_toolkits的静态三维可视化代码,另外一种是基于matplotlib的动态可视化代码。
mpl_toolkits实现
Axes3D简介
mpl_toolkits 是 matplotlib 库的一个模块集合,它包含了多个为 matplotlib 增加额外功能的工具包。这些工具包提供了扩展 matplotlib 标准功能的方法,允许用户绘制高级图表,以及为图表添加特别的特征和样式。
Axes3D 是 mpl_toolkits.mplot3d 模块中的一个类,用于创建和处理三维坐标轴。该类是 matplotlib 中绘制三维图形的核心,它扩展了 matplotlib 的二维绘图库,实现了三维空间中的可视化。与 matplotlib 二维坐标轴的 Axes 类似,Axes3D 提供一系列标准的三维绘图方法。
使用 Axes3D 可以方便地绘制三维散点图、线图、曲面图、线框图和三维条形图等。除了支持基本的三维绘图,Axes3D 还提供了工具来控制视图角度、缩放级别、以及坐标轴的刻度和标签。此外,Axes3D 支持交互性操作,如旋转和缩放,这些功能使得用户能以直观的方式探索三维数据。
代码实现
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def plot_3d_boxes(positions, sizes, container_size):
fig = plt.figure(figsize=[40,10])
ax = fig.add_subplot(111, projection='3d')
# 根据盒子尺寸选择颜色
colors = plt.cm.viridis(np.linspace(0, 1, len(sizes)))
for i, (position, size) in enumerate(zip(positions, sizes)):
color = colors[i]
x, y, z = position
dx, dy, dz = size
ax.bar3d(x, y, z, dx, dy, dz, color=color)
# 设置容器尺寸
ax.set_box_aspect([container_size[0], container_size[1], container_size[2]]) # 设置显示的长宽高比例
ax.set_xlim