Масштабирование осей Matlab
как именно вы получаете фиксированное масштабирование осей на графике Matlab при построении графика внутри цикла? Моя цель-увидеть, как данные развиваются внутри цикла. Я пробовал использовать axis manual
и axis(...)
не повезло. Есть предложения?
Я знаю hold on
делает трюк, но я не хочу видеть старые данные.
2 ответов
Если вы хотите, чтобы ваши новые данные на графике заменяли старые данные на графике, но поддерживали те же ограничения осей, вы можете обновить значения x и y данных на графике с помощью SET команда в вашем цикле. Вот простой пример:
hAxes = axes; %# Create a set of axes
hData = plot(hAxes,nan,nan,'*'); %# Initialize a plot object (NaN values will
%# keep it from being displayed for now)
axis(hAxes,[0 2 0 4]); %# Fix your axes limits, with x going from 0
%# to 2 and y going from 0 to 4
for iLoop = 1:200 %# Loop 100 times
set(hData,'XData',2*rand,... %# Set the XData and YData of your plot object
'YData',4*rand); %# to random values in the axes range
drawnow %# Force the graphics to update
end
когда вы запустите выше, вы увидите звездочку, прыгающую по осям в течение нескольких секунд, но пределы осей останутся фиксированными. Вы не должны использовать провести команда, потому что вы просто обновляете существующий объект plot, а не добавление нового. Даже если новые данные выходят за пределы осей, ограничения не изменятся.
вы должны установить пределы осей; в идеале вы делаете это перед началом цикла.
это не сработает
x=1:10;y=ones(size(x)); %# create some data
figure,hold on,ah=gca; %# make figure, set hold state to on
for i=1:5,
%# use plot with axis handle
%# so that it always plots into the right figure
plot(ah,x+i,y*i);
end
это будет работать
x=1:10;y=ones(size(x)); %# create some data
figure,hold on,ah=gca; %# make figure, set hold state to on
xlim([0,10]),ylim([0,6]) %# set the limits before you start plotting
for i=1:5,
%# use plot with axis handle
%# so that it always plots into the right figure
plot(ah,x+i,y*i);
end