在同一图中绘制时调整轴的大小

时间:2014-10-08 08:46:05

标签: matlab matlab-figure

请创建两个函数,以便能够重现我的意思:

第一个功能:

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

如果您取消注释&#34;抓住&#34;在testPlot1()中再次调用上面的语句,你将得到:

enter image description here

对我来说这是不明确的行为。在第一种情况下,testPlot1()创建一个图形,将点云绘制到其中并修改轴属性。然后调用testPlot2(gca)将该行添加到图中,但该行被剪裁。 然而,在第二种情况下,线不再被修剪。为什么它现在没有剪裁,以前它是?

这似乎与我在testPlot1()中的axis属性中所做的更改有关。有人可以向我解释这种行为吗? (为什么它与hold持有效,我的轴属性的变化是什么原因)

1 个答案:

答案 0 :(得分:0)

hold on是一个Matlab命令(hold off再次将其关闭),您可以在一个图形上绘制多个元素,而不会删除之前的元素。

会发生什么

如果你调用plot函数,会创建一个数字(或者使用已经存在的数字!),Matlab会在该数字中绘制一个 new 图。该图中的先前情节已经消失。

如果您想为地块添加更多积分,可以拨打hold on,然后再次拨打plot,这次使用不同的号码,也可以使用不同的颜色。 ,如果您忘记再次为活动数字转换hold off,您所做的任何绘图活动(如plot)都会添加到图中。这就是您问题中第二张图片中出现的情况。您在0到1的范围内绘制了一些点,然后在第二个函数中添加了一些,但是在2到3的范围内。结果,轴扩展到0到3的范围。

或者,您可以调用figure,这会导致出现新的数字。 figure_handle = figure();将返回一个数字句柄,您可以将其传递给您的函数,以防您有多个数字,并希望在一段时间后更改其中一个。