所以第一个情节:
clear all; close all;
figure; hold on
points=[0 0 0; 0.5 0 0; 0.5 0.5 0; 0 0.5 0; 0 0 0];
plot3(points(:,1), points(:,2), points(:,3),'c','linewidth', 2);
scatter3(points(:,1),points(:,2),points(:,3),40,'filled','k');
但没有问题当我使用旋转工具旋转图形时,使用scatter3绘制的点始终显示在线图的顶部。
现在!!
当我绘图时:
figure;
hold on;
points=[0 0 0; 0.5 0 0; 0.5 0.5 0; 0 0.5 0; 0 0 0; ...
0 0 1; 0.5 0 1; 0.5 0.5 1; 0 0.5 1; 0 0 1];
plot3(points(:,1), points(:,2), points(:,3),'c','linewidth', 2);
sc=scatter3(points(:,1),points(:,2),points(:,3),40,'filled','k');
当我旋转图形时,线图几乎总是在散点的顶部(从角度上看有一点),这不是我想要的。
我找到了一种可行的解决方案:
uistack(sc)
但它不起作用。
那么,我到底该怎么做才能使散射点在第一个图形中显示出来呢??非常感谢你的回答这对我的硕士论文很重要:D
最佳答案
我尝试了不同的方法。
我用的不是scatter3
,而是球体。
效率较低,但仍不完美但我找不到更好的解决办法。
这是我的代码示例:
figure;
set(gca, 'xlim', [-0.005, 0.505], 'ylim', [-0.005, 0.505], 'zlim', [-0.005, 1.005]);
hold on;
points=[0 0 0; 0.5 0 0; 0.5 0.5 0; 0 0.5 0; 0 0 0; ...
0 0 1; 0.5 0 1; 0.5 0.5 1; 0 0.5 1; 0 0 1];
plot3(points(:,1), points(:,2), points(:,3),'c','linewidth', 2);
sc=scatter3(points(:,1),points(:,2),points(:,3),40,'filled','k');
[x,y,z] = sphere(20); %Returns the coordinates of the 20 by 20 sphere
for i = 1:length(points)
x0 = points(i, 1);
y0 = points(i, 2);
z0 = points(i, 3);
h_surf = surf(gca, x*0.004+x0, y*0.004+y0, z*0.004+z0, 'FaceColor', 'black', 'LineWidth', 2);
end
注意:我必须设置
xlim
,ylim
,zlim
才能使其工作。关于matlab - matlab情节与plot3和scatter3混淆?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39308821/