2013-07-31 28 views
3

我目前正在嘗試在Matlab圖中移動軸位置。我想達到類似這樣的東西(這是在做的gnuplot):MATLAB中的不同軸位置

enter image description here

我沒有任何想法,這是否可能在所有的,或者我可能會找到答案,所以任何幫助都感激不盡。

+0

此鏈接將幫助我希望.http://www.mathworks.co.kr/kr/help/matlab/creating_plots/individual-axis-control.html –

+0

發佈您的代碼到目前爲止? – Dan

+0

到目前爲止我還沒有任何代碼。我想一個簡單的曲面圖就足以測試這個。 – Schnigges

回答

6

嗯....

因此,讓我們的陰謀:

x = zeros(1,21); y = -10:10; z = y/2; 
figure; plot3(x,y,z); % a line from (0,-10,-5) to (0,10,5) similar to the example 

just the line plotted

那麼,一個問題是,MATLAB不會自動繪製座標軸,你已經證明有。 這是這裏討論: How to show x and y axes in a MATLAB graph?

要繪製的(三維),一個廉價的解決方案是:

locs = axis; % get current axis boundaries 
hold on; 
plot3([locs(1) locs(2)], [0 0], [0 0]); %plot xaxis, a line between(-x,0,0) and (x,0,0); 
plot3([0 0], [locs(3) locs(4)], [0 0]); %plot y axis, the line (0,-y,0) and (0,y,0); 
plot3([0 0], [0 0], [locs(5) locs(6)]); % plot z axis 
hold off 

now with axis added

就這樣牛羚情節,3D MATLAB情節「在一個盒子。」與Gnu圖不同,matlab框未被概述。如果你想概述一下,你將不得不畫出這些線......呃。

% lets plot the 12 lines to make this box in black ('k'); 
hold on; 
% hold x constant and plot 4 parallel-to-x lines; 
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(5) locs(5)],'k'); % (-x,-y,-z) to (x,-y,-z) 
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(6) locs(6)],'k'); 
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(6) locs(6)],'k'); 
% plot parallel-to-y lines 
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(6) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(6) locs(6)],'k'); 
% plot parallel-to-z lines 
plot3([locs(1) locs(1)], [locs(3) locs(3)], [locs(5) locs(6)],'k'); 
plot3([locs(1) locs(1)], [locs(4) locs(4)], [locs(5) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(3)], [locs(5) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(4) locs(4)], [locs(5) locs(6)],'k'); 
hold off; 

現在我們有箱子;

now with a box

如果我們只是部位y> 0,Z> 0;我們可以使用axis命令。 在繪製所有其他線條之後使用座標軸真的讓我感到困惑,所以我會在開始時決定你的極限。

一起:

figure; 
plot3(x,y,z); % a line from (0,-10,-5) to (0,10,5) similar to the example 
locs = axis; 
axis([locs(1) locs(2) 0 locs(4) 0 locs(6)]); 
locs = axis; 

hold on; 
% plot axis 
plot3([locs(1) locs(2)], [0 0], [0 0]); %plot xaxis, a line between(-x,0,0) and (x,0,0); 
plot3([0 0], [locs(3) locs(4)], [0 0]); %plot y axis, the line (0,-y,0) and (0,y,0); 
plot3([0 0], [0 0], [locs(5) locs(6)]); % plot z axis 

% plot box 
% hold x constant and plot 4 parallel-to-x lines; 
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(5) locs(5)],'k'); % (-x,-y,-z) to (x,-y,-z) 
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(6) locs(6)],'k'); 
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(6) locs(6)],'k'); 
% plot parallel-to-y lines 
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(6) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(5) locs(5)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(6) locs(6)],'k'); 
% plot parallel-to-z lines 
plot3([locs(1) locs(1)], [locs(3) locs(3)], [locs(5) locs(6)],'k'); 
plot3([locs(1) locs(1)], [locs(4) locs(4)], [locs(5) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(3) locs(3)], [locs(5) locs(6)],'k'); 
plot3([locs(2) locs(2)], [locs(4) locs(4)], [locs(5) locs(6)],'k'); 
hold off; 

all done

我相信你可以做的更好,但我認爲這是一個非常好的開始。我會把所有這些亂七八糟的東西放到一個函數中來保存輸入。

+0

看起來不錯弗雷德裏克!這絕對是我可以用來實現我的目標的東西。謝謝! – Schnigges

相關問題