You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Matplotlib在Python中制作魔方并设置各面独立颜色

如何用Matplotlib给魔方的每个面设置独立颜色?

你的代码目前是给整个x层设置统一颜色,但Matplotlib的voxels函数中,facecolors参数需要针对每个立方体的六个面分别指定颜色,正确的维度应该是 (nx, ny, nz, 6, 4),其中6对应六个面的固定顺序:x-(左)、x+(右)、y-(下)、y+(上)、z-(后)、z+(前)。

下面是修正后的代码,实现标准魔方的颜色设置:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# 魔方尺寸:3x3x3
size = 3
data = np.ones((size, size, size))
alpha = 0.9

# 定义魔方六个面的标准颜色(RGBA)
face_colors = {
    'x-': [0, 1, 0, alpha],   # 左面:绿色
    'x+': [0, 0, 1, alpha],   # 右面:蓝色
    'y-': [1, 1, 1, alpha],   # 下面:白色
    'y+': [1, 1, 0, alpha],   # 上面:黄色
    'z-': [1, 0.5, 0, alpha], # 后面:橙色
    'z+': [1, 0, 0, alpha]    # 前面:红色
}

# 初始化facecolors数组,默认用灰色填充内部面
colors = np.full((size, size, size, 6, 4), [0.5, 0.5, 0.5, alpha])

# 给魔方的外表面设置对应颜色
# 左面(x=0的所有立方体的x-面)
colors[0, :, :, 0] = face_colors['x-']
# 右面(x=2的所有立方体的x+面)
colors[2, :, :, 1] = face_colors['x+']
# 下面(y=0的所有立方体的y-面)
colors[:, 0, :, 2] = face_colors['y-']
# 上面(y=2的所有立方体的y+面)
colors[:, 2, :, 3] = face_colors['y+']
# 后面(z=0的所有立方体的z-面)
colors[:, :, 0, 4] = face_colors['z-']
# 前面(z=2的所有立方体的z+面)
colors[:, :, 2, 5] = face_colors['z+']

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')

# 绘制魔方,edgecolors设置为灰色区分小立方体
ax.voxels(data, facecolors=colors, edgecolors='grey')

# 调整视角,让魔方显示更清晰
ax.view_init(elev=30, azim=45)
plt.show()

关键说明:

  • facecolors的维度必须是 (nx, ny, nz, 6, 4),最后一维是RGBA颜色值
  • 六个面的顺序是固定的,必须严格对应:x-、x+、y-、y+、z-、z+
  • 通过索引定位到魔方的外表面层,给对应立方体的对应面赋值颜色
  • 内部面可以保留默认灰色,也可以根据需求调整

内容的提问来源于stack exchange,提问作者jacob_a26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:05:19