EDA365电子论坛网

标题: 问个三维散点图的投影问题 [打印本页]

作者: replace    时间: 2023-1-12 11:17
标题: 问个三维散点图的投影问题
目的是想将三维散点投影到X-Y平面,三维点和其对应投影点之间用实线或虚线相连,4 e+ y# k/ L' r+ c: d% X5 v" Z8 [* q
最好是虚线相连。现在能找的出X-Y平面上的投影点,但虚线相连实现不了,求指教。
+ G  t* g- I% ?非常感谢!
4 ~" @: w0 z( w
# A# S/ D: x7 l3 ^. {) j5 y* n相关数据如下:
/ ]; W/ O3 _1 O: k- }5 ~; x  |0 [clear* R( C- _: l8 |4 z- W  a
close all" m* E# Z+ ^6 S$ u- s
x=3+randn(100,1);
) A2 F& E3 @* y: t2 D6 sy=2+randn(100,1);+ Z/ J1 f8 l' [/ v2 x& L7 M
z=5+randn(100,1);3 y  O: k5 z: o1 S* p% I
scatter3(x,y,z)) H1 i7 u: W0 d, X5 s
xlabel('X')  c0 U5 Z  ?0 R1 P8 N8 ~
ylabel('Y')
7 \, P0 O9 {  d! R( g- jzlabel('Z')
5 d9 E2 w: l! g; L. ?5 `9 Y  U$ uhold on
. d0 O' ?0 I6 K/ N  F! T  Uscatter3(x,y,zeros(length(x),1))- c# z4 L/ ~" J/ [0 R% M
hold off2 A4 g4 V2 G9 o$ Z( J2 k

作者: qian211111    时间: 2023-1-12 13:12
plot3命令应该可以做到吧?你可以查查帮助
作者: someone    时间: 2023-1-12 13:21
你没有写画虚线的语句,当然画不出了/ g/ [/ m; L1 x: m
clear,clc
! `" [- b% m& `5 Bclose all. ~( O' P7 _1 I0 Z& K1 `
6 t% B5 B. ?* Z; `, p3 t# H$ i+ W
x = 3+randn(30,1);
' W" @& j; ^1 B0 M( h4 py = 2+randn(30,1);
' e* f/ J' D4 y$ J4 E5 b/ Iz = 5+randn(30,1);0 G' H$ l: V# q
p = {'linestyle','none','marker','o'};- c5 V( f9 @4 h* Z8 W" R# A
line(x,y,z,p{:});9 e% g9 z: f3 D: r2 {
line(x,y,0*z,p{:},'color','g');1 D4 Y" C; B! k' s+ W
line([x x]',[y y]',[z 0*z]','linestyle','--','color','k')
) J1 R3 Y, z, fxlabel('X')9 U/ _, b" \+ W  T! N
ylabel('Y')
: O' _" D& a* j! izlabel('Z')2 A( e6 U0 ^- L  v7 [
grid on$ d- z1 c+ y# E
view(-30,50)
作者: li205212021    时间: 2023-1-12 13:29
个人觉得这里plot3函数还是要酌情使用
$ s) k: F- {$ G) \3 I7 zclose all
/ G% @/ ~5 j* p2 G* Wclear,clc/ y9 Z: Z* [1 _9 Q6 w5 I+ N- i6 S

8 J' V1 {/ L* s* o5 V) Q" E; lx = rand(100,1);& P2 v+ N; E+ N. X( c
y = rand(100,1);
2 n1 e' |' a& g; }$ X3 zz = rand(100,1);
5 D- v6 \% |: B7 T! r8 a* l
7 I: v' t1 X5 E% M. t7 }6 V; {' ~tic, for idx=1:100, cla; plot3([x x]',[y y]',[z 0*z]','-.'); end; toc;
# `/ f4 C+ S, @6 g, O5 ?tic, for idx=1:100, cla; line([x x]',[y y]',[z 0*z]','linestyle','-.'); end; toc;7 t, |" Z8 |" }& S+ B9 R4 J6 s+ t  g
+ D3 W" t( ^" c0 _
Elapsed time is 4.888176 seconds.' t6 A4 G6 P' ^7 H
Elapsed time is 2.246748 seconds.1 f; X+ n- P& @& N
可以看出plot3因为是个比较高级的函数所以效率不如line函数' c) G* L/ r5 _3 ^2 @9 K! s  ?
而且plot3还需要hold on/off
) E8 u, H8 N9 b& K" v, P- K/ v所以多数情况(小部分情况,例如你要刷新什么的和一些其他较少见的情况plot更加适合)下line是比plot3/plot更好的选择
3 E3 h! q$ j) f6 X" ^3 w9 x! K" L2 |7 b
另外对于scatter/scatter3,l在点数较少(不多于100个)的情况下line也有不错的效率优势3 U6 b  Y* c8 S8 O" u$ c' t( O/ e
但是如果对每个点有不同的要求(例如不同大小)或者其他特殊情形下(例如点较多),还是用专门做散点的scatter/scatter3较好




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2