2015-05-08 15 views
7

Non ho mai visto una trama come la seguente (la trama in (a)). È possibile?Matlab più lotti sovrapposti

enter image description here

+2

Questa è effettivamente una forma di [plot cascata] (http://en.wikipedia.org/wiki/Waterfall_plot). L'uso più famoso di questo tipo di trama potrebbe essere [questo dato pulsar] (http://www.itsokaytobesmart.com/post/96415755382/do-math-realizes-joy-division-did-ome-reale). Vedi ['waterfall'] (http://www.mathworks.com/help/matlab/ref/waterfall.html). Facendo questo con più assi sovrapposti (o fingendoli) ci vorrà un po 'di lavoro. – horchler

risposta

7

Secondo la pagina di profilo di @Ander Biguri

Matlab può anche fare la vostra cena, se si sa come usarlo.

che risponde alla domanda, se questo è ancora possibile ;-)

Tutti abbiamo bisogno è una conoscenza di base del comando axes - Il resto è solo ritocco per farlo sembrare bello. Diamo un'occhiata a questo:

Inizieremo con la creazione di alcuni dati di esempio:

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

Poi creeremo una cifra iniziale con uno sfondo bianco

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

Ora noi può creare un nuovo oggetto assi e tracciare x1 su di esso:

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'); 

rimuoveremo il bo x attorno agli assi, quindi rimangono solo gli assi xey. Inoltre ridimensioniamo la trama, quindi avremo spazio sufficiente per gli altri due grafici. Impostiamo anche il colore su none, cioè trasparente.

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

Ora dobbiamo creare il secondo grafico. Si creano altri assi oggetto in una posizione che ci piace:

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'); 

e così via:

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'); 

E semplice, otteniamo qualcosa che non sembra nemmeno così male:

the result

+0

Non ho mai visto questo riferimento prima! Sono sbalordito e deliziato! : P –

2

Utilizzando multipla waterfall trame, come suggerito Horchler:

0.123.
%// 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]) 

possiamo ottenere questo: enter image description here