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

如何在MayaVi中为单个3D球体指定独立颜色(已实现大小配置)

为Mayavi中每个3D球体指定独立颜色的解决方案

嘿,这事儿好办!Mayavi的mlab.points3d函数完全支持给每个球体单独设置颜色,结合你已有的代码,我给你整理出完整的实现方案:

完整代码示例

import mayavi.mlab as mlab
import numpy as np

# 设置白色背景、黑色前景
mlab.figure(fgcolor=(0., 0., 0.), bgcolor=(1, 1, 1))

# 球体的三维坐标
x1 = np.array([27.340, 26.266, 26.913, 27.886, 25.112])
y1 = np.array([24.430, 25.413, 26.639, 26.463, 24.880])
z1 = np.array([2.614, 2.842, 3.531, 4.263, 3.649])

# 球体初始大小 & 缩小后的大小(补全你未写完的代码,这里示例缩小一半)
size1 = np.array([7, 6, 6, 8, 6])
size = size1 * 0.5

# 为每个球体指定独立RGB颜色:Nx3的数组,每个元素是0-1的浮点数
# 示例颜色:红、绿、蓝、黄、品红
colors = np.array([
    [1.0, 0.0, 0.0],   # 第一个球红色
    [0.0, 1.0, 0.0],   # 第二个球绿色
    [0.0, 0.0, 1.0],   # 第三个球蓝色
    [1.0, 1.0, 0.0],   # 第四个球黄色
    [1.0, 0.0, 1.0]    # 第五个球品红
])

# 绘制带独立大小和颜色的球体
mlab.points3d(
    x1, y1, z1,
    mode='sphere',       # 必须设置为sphere才会渲染成球体(默认是点)
    scale=size,          # 传入每个球体的独立大小数组
    scale_mode='vector', # 启用每个点的独立缩放(对应size数组)
    color=colors         # 传入每个球体的独立颜色数组
)

# 显示3D场景
mlab.show()

关键细节说明

  • 颜色数组格式:必须是Nx3的numpy数组,每个元素取值范围是0.0到1.0(对应RGB颜色0-255的归一化值)。如果你的颜色是0-255的整数,只需除以255.0转换即可,比如:colors = np.array([[255,0,0], [0,255,0]]) / 255.0。
  • 大小控制:通过scale参数传入每个球体的大小数组,配合scale_mode='vector'实现每个球体的独立缩放,这和你已有的大小设置逻辑完美兼容。
  • 球体渲染:一定要设置mode='sphere',否则默认会渲染成小方块点,而不是你需要的球体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:05