2014-10-08 99 views
0

請,創建兩個函數能夠重現我的意思:調整大小軸

第一功能:

function testPlot1() 

pointData = rand(20000,3); 
figure; 
%hold on; % <- if commented out, does not work 
plot3(pointData(:,1), pointData(:,2), pointData(:,3),'Marker', '.', 'MarkerEdgeColor', 'b','MarkerSize', 5, 'LineStyle', 'none'); 

axis equal; 
xh = xlabel('X'); 
yh = ylabel('Y'); 
zh = zlabel('Z'); 
set([xh,yh, zh],... 
    'fontweight','bold',... 
    'fontsize',14,... 
    'color',[0,0,0]); 
view(0,20); 

end 

二級功能:

function testPlot2(fighandle) 
axes(fighandle); 
hold on; 
plot3([0 3],[0 3],[0 3], 'r', 'LineWidth', 10); 
end 

如果您現在致電

testPlot1();testPlot2(gca) 

你會得到如下: enter image description here

不過,若你取消對「堅持」在testPlot1(線),並再次撥打上面的語句,你會得到:

enter image description here

對我來說這行爲不明。在第一種情況下,testPlot1()創建一個圖形,繪製點雲並修改軸屬性。然後調用testPlot2(gca)將該行添加到圖中,但該行被剪切。 然而,在第二種情況下,該行不再被剪切。爲什麼現在不剪裁,以前它是?

它似乎與我在testPlot1()中的軸屬性中所做的更改有關。有人可以向我解釋這種行爲嗎? (爲什麼它與保持一致,我對軸屬性所做的更改有什麼影響)

+0

這是一個錯字:「(爲什麼它與保持,...」**它不**工作與持有,是不是你要求的? – Unapiedra 2014-10-08 09:01:30

+0

不,不是我會做一個編輯,因爲它有點混亂,我第一次調用testPlot1(); testPlot2(gca)是當「hold on」被註釋掉時。我也會嘗試澄清我的困惑 – user1809923 2014-10-08 09:04:23

回答

0

hold on是一個Matlab命令(hold off再次關閉它),您可以在一個圖中繪製多個元素而不需要以前的元素被刪除。

如果您調用plot功能會發生什麼

,這個數字將創建(或已經exisiting圖用於!)和Matlab繪製一個積成這一數字。之前的情節已經沒有了。

如果你想更多的點添加到您的情節,你可以叫hold on,然後再次調用plot,這次不同的數字,也許不同的顏色或左右。 但是,如果您忘記爲活動圖形再次變爲hold off,您所做的任何繪圖活動(如plot)都將添加到圖中。這是在你的問題的第二張圖片中發生的情況。您在0到1的範圍內繪製了一些點,然後在第二個函數中添加了一些點,但範圍在2到3之間。結果,軸擴展到0到3的範圍。

或者,您可以撥打figure,這將導致出現一個新數字。 figure_handle = figure();將返回一個數字句柄,您可以將其傳遞給您的函數,以防萬一您有多個數字並想在一段時間後更改其中一個數字。

+0

我知道,但上面的問題是調整軸限制的大小。在第一種情況下,兩者都被繪製在同一個圖中,「線」僅僅是不可見的,因爲它被剪切了 – user1809923 2014-10-08 08:57:44

+0

你期望在'function1'中用'hold on'看到什麼?首先,我不想讓它在那裏,但它的作用是完全可以預料的。 – Unapiedra 2014-10-08 09:00:36

+0

如果我的評論沒有意義,那是因爲user1809923更改了他/她的評論... – Unapiedra 2014-10-08 09:03:06