MATLAB 在3D矢量图中添加对应颜色3D点的实现问题咨询
Matlab 3D矢量图叠加自定义颜色3D点实现方案
你已通过循环调用quiver3绘制了带自定义RGB颜色的3D矢量场,现有12×3的点坐标矩阵(假设命名为point_xyz,每行对应一个点的X/Y/Z坐标),以及配套的12×3的点RGB颜色矩阵(假设命名为point_rgb,每行对应一个点的三通道颜色值),可通过以下两种方法实现叠加绘制:
方法1:使用scatter3绘制(推荐)
此前调用失败大概率是颜色参数格式错误或未开启图层保持,正确写法如下:
% 提取点的三维坐标 x = point_xyz(:,1); y = point_xyz(:,2); z = point_xyz(:,3); % 绘制逐点自定义颜色的实心3D点 % 第四个参数60为点的尺寸,可根据显示需求调整 scatter3(x, y, z, 60, point_rgb, 'filled'); hold on;
注意:Matlab绘图要求RGB值取值范围为01,若你的颜色值为0255的整数,需先执行point_rgb = double(point_rgb)./255;做转换
方法2:使用plot3绘制
plot3默认同批次绘制的元素共用同一颜色,因此需要循环逐点绘制:
for i = 1:size(point_xyz,1) plot3(point_xyz(i,1), point_xyz(i,2), point_xyz(i,3), ... 'o', 'MarkerSize', 8, ... 'MarkerFaceColor', point_rgb(i,:), ... 'MarkerEdgeColor', point_rgb(i,:)); hold on; end
常见问题排查
- 调用点绘制函数前必须执行
hold on,避免新图层覆盖原有矢量图层 - 确认颜色矩阵维度为12×3,与点的数量匹配,不要误传一维颜色索引数组
内容的提问来源于stack exchange,提问作者STEMQs
相关产品推荐
相关产品推荐

