How to bring a scatter plot to the front of a 3d multiple plot

3 次查看(过去 30 天)
Good morning!
I would like to realize this plot with the scatter points covering the line plot (for istance, the green point 35 should cover the black line of the plot, as the 32 does). How can i do? Was trying with the children function but it seems doesnt work with this 3d plot.

回答(1 个)

VINAYAK LUHA
VINAYAK LUHA 2023-9-7
Hi Daniele,
As per my understanding you wish to superimpose the scatter plot over the line plot,such that line plot lines are not visible inside the scatter plot points, this can be done by plotting the grid-line plot first followed by the scatter points plot -
In the following code if the scatterplot is plotted first, the line plot lines are still visible over the points
xInterval = 5;
yInterval = 5;
zDistance = 2;
[xGrid, yGrid] = meshgrid(-10:xInterval:10, -10:yInterval:10);
zGrid = zDistance * ones(size(xGrid));
figure;
scatter3(xGrid, yGrid, zGrid,100,MarkerFaceColor="flat"); %line 9
hold on
surf(xGrid, yGrid, zGrid,FaceColor="none",LineWidth=1); %line 11
hold off
However, if you do the opposite, plot line plot first and then the scatter plot ,i.e switch places of line 9 and 11, you get the desired result.
Hope this helps
  3 个评论
VINAYAK LUHA
VINAYAK LUHA 2023-9-8
Hi Daniele,
Thanks for the update, Is it possible to share some code here ?
Daniele Giunta
Daniele Giunta 2023-9-8
Sure! I can't give you the scatter coordinates because they are in an excel file, but i think it doesn't matter to solve this graphic problem. This is the code (probably it could be so much better):
sens=readmatrix("Sens.xlsx");
% Vertical lines
p1 = [linspace(0,0,2); linspace(0.6,0.6,2); linspace(-3,0,2)];
p2 = [linspace(0,0,2); linspace(5.6,5.6,2); linspace(-3,0,2)];
p3 = [linspace(0,0,2); linspace(10.6,10.6,2); linspace(-3,0,2)];
p4 = [linspace(18,18,2); linspace(0.6,0.6,2); linspace(-3,0,2)];
p5 = [linspace(18,18,2); linspace(5.6,5.6,2); linspace(-3,0,2)];
p6 = [linspace(18,18,2); linspace(10.6,10.6,2); linspace(-3,0,2)];
% Horizontal lines
t1 = [linspace(0,0,2); linspace(0,11.2,2); linspace(0,0,2)];
t2 = [linspace(4.5,4.5,2); linspace(0,11.2,2); linspace(0,0,2)];
t3 = [linspace(9,9,2); linspace(0,11.2,2); linspace(0,0,2)];
t4 = [linspace(13.5,13.5,2); linspace(0,11.2,2); linspace(0,0,2)];
t5 = [linspace(18,18,2); linspace(0,11.2,2); linspace(0,0,2)];
t6 = [linspace(0,18,2); linspace(0,0,2); linspace(0,0,2)];
t7 = [linspace(0,18,2); linspace(1.4,1.4,2); linspace(0,0,2)];
t8 = [linspace(0,18,2); linspace(2.8,2.8,2); linspace(0,0,2)];
t9 = [linspace(0,18,2); linspace(4.2,4.2,2); linspace(0,0,2)];
t10 = [linspace(0,18,2); linspace(5.6,5.6,2); linspace(0,0,2)];
t11 = [linspace(0,18,2); linspace(7,7,2); linspace(0,0,2)];
t12 = [linspace(0,18,2); linspace(8.4,8.4,2); linspace(0,0,2)];
t13 = [linspace(0,18,2); linspace(9.8,9.8,2); linspace(0,0,2)];
t14 = [linspace(0,18,2); linspace(11.2,11.2,2); linspace(0,0,2)];
figure;
% Line plot
for i=1:6
eval(['plot3(p' num2str(i) '(1,:),p' num2str(i) '(2,:),p' num2str(i) '(3,:),Color=[0 0 0],LineWidth=1.2)'])
hold on
end
for j=1:14
eval(['plot3(t' num2str(j) '(1,:),t' num2str(j) '(2,:),t' num2str(j) '(3,:),Color=[0 0 0],LineWidth=1.2)'])
end
% Scatter plot
scatter3(sens(1:31,1),sens(1:31,2),sens(1:31,3),250,'filled','r','MarkerEdgeColor','k','LineWidth',1.5)
scatter3(sens(36:41,1),sens(36:41,2),sens(36:41,3),250,'filled','b','MarkerEdgeColor','k','LineWidth',1.5)
scatter3(sens(32:35,1),sens(32:35,2),sens(32:35,3),250,'filled','MarkerFaceColor',[0.4660 0.8740 0.1880],'MarkerEdgeColor','k','LineWidth',1.5)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Axis Labels 的更多信息

产品


版本

R2022b

Translated by