add lines through origin in 3D scatter plot

hey everyone,
I am trying to use the xline, yline function to insert lines at x = 0 and y=0 in my score plot. This works. However, when for some reason the zline function does not work when I want to specify a colour.
xline(0,'--k');
yline(0,'--k');
zline(0,'--k');
But when I change zline to:
zline(0)
I get the z = 0 line in a yellow colour. Is there a way to make this line dashed and black?

답변 (2개)

Adam Danz
Adam Danz 2019년 4월 9일
편집: Adam Danz 2019년 4월 15일

0 개 추천

There is no zline() funciton built into matlab (2019a). Note that xline and yline became available in 2018b.
xline and yline plot the reference lines in the middle of the z axis. To plot the origin lines (or any other 3D reference lines),
xlim([-1 1]);
ylim([-1 1]);
zlim([-1 1]);
hold on;
line(2*xlim, [0,0], [0,0], 'LineWidth', 3, 'Color', 'k');
line([0,0], 2*ylim, [0,0], 'LineWidth', 3, 'Color', 'k');
line([0,0], [0,0], 2*zlim, 'LineWidth', 3, 'Color', 'k');
view(3)
grid on
190415 124851-Figure 1.jpg

댓글 수: 7

well, it gives a line at z = 0 if I don't specify the linetype and colour
Post your code.
When I call zline in scatter3, I get:
Undefined function or variable 'zline'.
This in R2019a.
What's the result of
which zline
scatter3(O_Synthetic(:,1),O_Synthetic(:,2),O_Synthetic(:,3),'filled','MarkerFaceColor',[0 1 0]); %green
text(O_Synthetic(:,1),O_Synthetic(:,2),O_Synthetic(:,3),OSnames,'FontSize',8);
hold on;
scatter3(O_Natural(:,1),O_Natural(:,2),O_Natural(:,3),'filled','MarkerFaceColor',[1 1 0]); %yellow
text(O_Natural(:,1),O_Natural(:,2),O_Natural(:,3),ONnames,'FontSize',8);
hold on;
scatter3(Cl(:,1),Cl(:,2),Cl(:,3),'filled','MarkerFaceColor',[1 0 0]); %red
text(Cl(:,1),Cl(:,2),Cl(:,3),Clnames,'FontSize',8);
hold on;
scatter3(C(:,1),C(:,2),C(:,3),'filled','MarkerFaceColor',[0 0 0]); %black
text(C(:,1),C(:,2),C(:,3),Cnames,'FontSize',8);
legend(legendname);
xline(0,'--k');
yline(0,'--k');
zline(0);
I have MATLAB version 2018b btw
oh you guys are right.
the result of
which zline
gives
C:\Program Files\MATLAB\R2018b\toolbox\PLS_Toolbox_87\zline.p
is there a different way to add a z-line? I also would like to know how to remove the lines from my legend
Adam Danz
Adam Danz 2019년 4월 9일
편집: Adam Danz 2019년 4월 11일
I edited my answer to show how to plot the origin lines. The xline and yline functions don't work well with 3D plots since their z values are in the middle of the z axis.
To avoid the lines appearing in the legend, either
1) after creating the legend, turn off auto-updating: legend(...,'AutoUpdate','off')
2) plot the legend at the end and specify the handles that should appear in the legend.

댓글을 달려면 로그인하십시오.

Star Strider
Star Strider 2019년 4월 9일

0 개 추천

One option:
zx = 0;
zy = 0;
figure
scatter3(rand(10,1), rand(10,1), rand(10,1))
hold on
xline(0,'--k');
yline(0,'--k');
plot3([1 1]*zx, [1 1]*zy, [zlim], '--k') % Plot ‘zline’ At (zx,zy)
hold off

카테고리

태그

질문:

2019년 4월 9일

편집:

2019년 4월 15일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by