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

如何在Python中可视化[0,1]区间的归一化3D数组并按值匹配对应颜色

归一化3D数组的3D可视化实现方案

前置依赖

先安装基础实现所需的库:
pip install numpy matplotlib

如果要处理大尺寸3D数组,对渲染流畅度要求更高,可额外安装mayavi库:
pip install mayavi

实现代码(基于matplotlib)

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

# 替换为你自己的3D归一化数组,要求shape为(Nx, Ny, Nz),取值范围[0,1]
# 下方为随机数组示例,使用时替换为自己的变量即可
# arr = np.random.rand(20, 20, 20)
arr = 你的3D数组变量

# 生成3D网格坐标
x, y, z = np.indices(arr.shape)

# 自定义显示阈值,仅展示数值大于阈值的体素,设为0即展示所有非0体素,可按需调整
voxel_mask = arr > 0

# 直接用0~1的数组值映射颜色,一一对应,可更换cmap参数调整配色(如jet、plasma等)
face_colors = plt.cm.viridis(arr)

# 创建3D画布
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# 绘制体素,edgecolor为体素边框颜色,alpha为透明度,可按需调整
ax.voxels(voxel_mask, facecolors=face_colors, edgecolor='gray', alpha=0.7)

# 添加颜色条,对应数组数值大小
sm = plt.cm.ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=0, vmax=1))
sm.set_array([])
fig.colorbar(sm, ax=ax, label='数组数值')

# 设置坐标轴标注
ax.set_xlabel('X维度')
ax.set_ylabel('Y维度')
ax.set_zlabel('Z维度')

plt.show()

相关说明

  • 数组取值0对应配色方案最左侧颜色,取值1对应最右侧颜色,完全和数组数值一一对应
  • 可调整edgecolor参数改变体素边框颜色,调整alpha参数改变体素透明度,也可以更换cmap参数切换不同的配色方案
  • 大尺寸3D数组建议使用mayavi库实现,交互缩放、旋转的流畅度远高于matplotlib

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:15:03