[matlab]通过重写NewCallback方法使三维散点图scatter3数据游标cursor显示该点的值

重写点云可视化图scatter3数据游标的NewCallback显示该点的值

问题描述

matlab中显示散点图的方法scatter3,默认数据游标不能显示每个散点的值。可以实现四维数据可视化,但是不能通过数据游标显示该点值
[matlab]通过重写NewCallback方法使三维散点图scatter3数据游标cursor显示该点的值_第1张图片

重写游标回调函数

[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
S = repmat([50,25,10],numel(X),1);
C = repmat([1,2,3],numel(X),1);
s = S(:);
c = C(:);
figure
h = scatter3(x,y,z,s,c);
view(40,35);
% 进入数据游标选取模式,游标的回调函数更新为自定义的fun_NewCallbackForScatter3
hd = datacursormode;
hd.UpdateFcn = @(obj,event_obj) fun_NewCallbackForScatter3(obj,event_obj,h);

新建.m文件,命名为fun_NewCallbackForScatter3

function output_txt = fun_NewCallbackForScatter3(obj,event_obj,h)
pos = get(event_obj,'Position');
ind = get(event_obj,'DataIndex');
output_txt = {['X: ',num2str(pos(1),4)],...
    ['Y: ',num2str(pos(2),4)],['Z: ',num2str(pos(3),4)],['C:', num2str(h.CData(ind))]};
end

运行结果

成功实现了想要的功能,通过shift可以选多个点。
[matlab]通过重写NewCallback方法使三维散点图scatter3数据游标cursor显示该点的值_第2张图片

你可能感兴趣的:(Matlab)