Correcting the label in a 3D scatter plot
1 次查看(过去 30 天)
显示 更早的评论
Hello there,
I have a .xls file that contains x,y,z vertics. The sequence goes something like this (that header of each): x0,y0,z0,x1,y2,z2,..........x1000,y1000,z1000. (3000points in total) Each x,y,z together forms a point I see in the scatter 3D point. I am wondering how to identity/access that particular point properly, say x0,y0,z0 will be verticx 0, x1000,y1000,z1000 will be verticx 1000.
That's what I have from the help eailer:
clc;clear all;
[num,txt,raw] = xlsread('test_april24.csv');
for i = 1:3:3000
a = num(3,i);
b = num(3,i+1);
c = num(3,i+2);
k=scatter3(a,b,c, 'filled');
S=string(1:3000).';
text(a, b, c, S);
row = dataTipTextRow('Index: ',i');
k.DataTipTemplate.DataTipRows(end+1) = row;
hold on
end
The index number is now just showing one of the axis (since its based on the total number i) say index 3000 but I am expecting 1000
In addition, when the index popped up, is there a way that I can access a participant point that I am interested? say x100,y100,z100 (verticx100)?
Many thanks!
采纳的回答
darova
2020-4-27
I used currentPoint property of callback to get coordinates of mouseclick
currentPoint returns 2 points in 3D space. I used crossp roduct to find closest point
See script inside
8 个评论
darova
2020-4-27
Sure. Go inside callback function and add this line
% line(x(ix),y(ix),z(ix),'marker','*')
[x(ix) y(ix) z(ix)]
更多回答(1 个)
Image Analyst
2020-4-27
If you want vertex 100, just use that index to get the x, y, and z values:
x100 = x(100);
y100 = y(100);
z100 = z(100);
7 个评论
Image Analyst
2020-4-27
No, but it looks like darova figured out what you want and solved it because you accepted his/her answer.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!