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

在同一图中绘制单个3D点与曲面并保留指定轴范围的问题

解决在MATLAB中同图绘制3D曲面与单个点并保留轴范围的问题

我来帮你搞定这个问题!其实在MATLAB里实现这个需求很简单,核心就是用hold on保持绘图上下文,然后依次绘制曲面和点,最后锁定轴范围就行。结合你给出的代码片段,我整理了完整的解决方案:

核心思路

  1. 用hold on确保所有绘图操作都在同一个3D坐标系里进行,不会每次绘图都新建窗口覆盖之前的内容
  2. 先绘制曲面(可以用surf或mesh,按需选择),再绘制单个3D点(用plot3)
  3. 最后用axis()函数明确指定你需要的轴范围,完全保留你想要的区间

修改后的完整代码

%% 创建观测点网格
[obsX obsY] = meshgrid(0:1:50); % 生成观测点位置的X和Y数据
obsZ = zeros(size(obsX, 1)); % 生成观测点位置的Z数据(始终为obsZ = 0)
obsPos = [obsX(:), obsY(:), obsZ(:)]; % 列出所有观测点位置

%% 定义单个3D点的位置(替换成你的实际坐标)
singlePoint = [25, 25, 10]; % 示例:X=25,Y=25,Z=10的点,你可以改成自己的源点坐标

%% 绘制3D曲面与单个点
figure; % 创建新的绘图窗口
hold on; % 关键:保持当前坐标系,后续绘图都叠加在这里

% 绘制曲面(这里用surf,也可以换成mesh;FaceAlpha设置半透明避免挡住点)
surf(obsX, obsY, obsZ, 'FaceAlpha', 0.5); 
xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴');
title('3D曲面与单个标记点');

% 绘制单个3D点:用红色实心圆标记,调大尺寸更显眼
plot3(singlePoint(1), singlePoint(2), singlePoint(3), 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');

% 设置你需要的轴范围(替换成你指定的数值即可)
axis([0 50 0 50 0 20]); % 示例:X∈[0,50], Y∈[0,50], Z∈[0,20]
grid on; % 显示网格,让3D结构更清晰
hold off; % 结束绘图保持

关键细节说明

  • 如果你的曲面不是z=0的平面,只需要把obsZ替换成你自己的曲面高度矩阵就行,surf函数会自动适配
  • FaceAlpha参数是可选的,设置半透明后,即使点在曲面后面也能看到,要是不需要可以删掉这个参数
  • plot3的标记样式可以自定义:比如'bx'是蓝色叉号,'kp'是黑色五角星,按需调整
  • axis()里的数值直接改成你需要保留的轴范围就行,完全不会被绘图内容自动修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:41:22