2015-05-08 10 views
7

Nigdy nie widziałem spisku takiego jak poniższy (spisek w (a)). Czy to możliwe?Wiele ułożonych w stos działek Matlab

enter image description here

+2

To skutecznie formą [wodospadu fabuły] (http://en.wikipedia.org/wiki/Waterfall_plot). Najbardziej znanym zastosowaniem tego rodzaju działki może być [dane pulsara] (http://www.itsokaytobesmart.com/post/96415755382/do-math-realizes-joy-division-did-some-real). Zobacz ['waterfall'] (http://www.mathworks.com/help/matlab/ref/waterfall.html). Wykonanie tego z wieloma nakładającymi się osiami (lub ich sfałszowanie) zajmie trochę pracy. – horchler

Odpowiedz

7

Według strony profilu @Ander Biguri

Matlab może nawet zrobić kolację, jeśli wiesz jak go używać.

które odpowiedzi na pytanie, czy jest to w ogóle możliwe ;-)

Wszystko, czego potrzebujesz to podstawowa wiedza z komendy axes - reszta jest po prostu szczypanie, aby wyglądać ładnie. Rzućmy okiem na to:

Zaczniemy od utworzenia niektóre dane przykładowe:

t = 100:220; 
x1 = -(10*(t-130)).^2; 
x2 = -(10*(t-150)).^2; 
x3 = -(10*(t-170)).^2; 

Wtedy będziemy tworzyć wstępną postać z białym tłem

fig = figure(1); 
set(fig,'Color','w'); 

Teraz można utworzyć nowy obiekt osie i wykreślić x1 na nim:

ax(1) = axes('Position',[0.1,0.1,0.6,0.6]); 
plot(ax(1),t,x1+10^4*rand(size(x1)),'-k',t,x1,'-r'); 

Usuniemy BO x wokół osi, więc pozostają tylko osie x i y. Ponadto zmieniamy rozmiar działki, więc będziemy mieć wystarczająco dużo miejsca na pozostałe dwie działki. Ustawiamy również kolor na none, czyli transparentny.

set(ax(1),'Color','none'); 
set(ax(1),'Box','off'); 
set(ax(1),'Position',[0.1,0.1,0.6,0.6]); 

Teraz musimy utworzyć drugi wykres. Będziemy po prostu stworzyć kolejne osie obiekt w miejscu, które chcemy:

ax(2) = axes('Position',[0.2,0.2,0.6,0.6]); 
plot(ax(2),t,x2+10^4*rand(size(x2)),'-k',t,x2,'-r'); 
set(ax(2),'Color','none'); 
set(ax(2),'Box','off'); 

i tak dalej:

ax(3) = axes('Position',[0.3,0.3,0.6,0.6]); 
plot(ax(3),t,x3+10^4*rand(size(x3)),'-k',t,x3,'-r'); 
set(ax(3),'Color','none'); 
set(ax(3),'Box','off'); 

I proste, mamy coś, co nawet nie wyglądają tak źle:

the result

+0

Nie widziałem tego odniesienia wcześniej! Jestem oszołomiony i zachwycony! : P –

2

Korzystanie z wielu waterfall działek, jak sugeruje Horchler:

%// create some sample data 
t=10:20:110; 
x=0:1:200; 
Y=bsxfun(@(x,t) normpdf(x,t,20),x,t.');               %//' fix the code formatting on SO!! 

%// Make a colormap to to set the colour of the lines 
colormap([1 0 0;0 0 0]);caxis=[0 1]; 

%// Plot the first set of lines (red ones) 
h1=waterfall(x,t,Y,zeros(size(Y))); 
set(h1,'FaceColor','none','LineWidth',2) %// tweak the properties 
hold on 

%// Plot the second set of lines (black lines), just the red lines with some noise 
h2=waterfall(x,t,Y+0.002*(rand(size(Y))-0.5),ones(size(Y))); 
set(h2,'LineWidth',2) 
hold off 

view([16 28]) 

możemy uzyskać to: enter image description here