Пожалуйста, создайте две функции, чтобы иметь возможность воспроизвести то, что я имею в виду:
Первая функция:
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)
вы получите следующее:
Однако если вы раскомментируете строку «hold on» в testPlot1() и снова вызовете приведенный выше оператор, вы получите:
Для меня это непонятное поведение. В первом случае testPlot1() создает фигуру, рисует в ней облако точек и изменяет свойства осей. Затем вызов testPlot2(gca) добавляет линию к рисунку, но линия обрезается. Однако во втором случае линия больше не обрезается. Почему он сейчас не обрезается, а раньше был?
Кажется, это связано с изменениями, которые я делаю в свойствах осей в testPlot1(). Может ли кто-нибудь объяснить мне это поведение? (почему работает с задержкой, к чему приводят мои изменения в свойствах осей)
hold on
, не об этом ли вы спрашиваете? - person Unapiedra   schedule 08.10.2014