随时间变化的Matlab图
Matlab Plot that changes with time
我想画一个随时间变化的图形(可以把它想象成风吹过时画出一根柱子的形状,所以我想画出每一秒的形状)。
为了避免 x 轴限制频繁变化,我想将其固定为限制(我在绘图前计算的最大值和最小值)。这是我的代码示例:
for i=1:1:numberofrows
momentvaluesatinstant = momentvalues(i,:);
figure(1)
plot(momentvaluesatinstant,momentheader)
drawnow
title(sprintf('Moment profile along pile at time 0.2%f',time(i)'))
xlabel('Moment (kN.m)')
xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)])
ylabel('Length of pile (m)')
delay(1);
end
虽然我将 x 轴的限制指定为固定为我指定的值,但绘图会根据绘制的数据不断更改限制?有什么我想念的吗?
想通了,需要加上xlim manual
我不确定您为什么需要 xlim manual
,但这里有一个更紧凑、更正确的动画数据方式:
% use 'figure', `plot` and all the constant parts of the figure only once, before the loop.
figure(1)
m = plot(momentvalues(1,:),momentheader); % plotting only step 1
xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)])
xlabel('Moment (kN.m)')
ylabel('Length of pile (m)')
% loop from step 2 ahead
for k = 2:length(momentvalues)
pause(1); % use pause to set the delay between shots
% use 'set' to change the x values
set(m,'Xdata',momentvalues(k,:));
drawnow
title(sprintf('Moment profile along pile at time 0.2%f',k))
end
我想画一个随时间变化的图形(可以把它想象成风吹过时画出一根柱子的形状,所以我想画出每一秒的形状)。
为了避免 x 轴限制频繁变化,我想将其固定为限制(我在绘图前计算的最大值和最小值)。这是我的代码示例:
for i=1:1:numberofrows
momentvaluesatinstant = momentvalues(i,:);
figure(1)
plot(momentvaluesatinstant,momentheader)
drawnow
title(sprintf('Moment profile along pile at time 0.2%f',time(i)'))
xlabel('Moment (kN.m)')
xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)])
ylabel('Length of pile (m)')
delay(1);
end
虽然我将 x 轴的限制指定为固定为我指定的值,但绘图会根据绘制的数据不断更改限制?有什么我想念的吗?
想通了,需要加上xlim manual
我不确定您为什么需要 xlim manual
,但这里有一个更紧凑、更正确的动画数据方式:
% use 'figure', `plot` and all the constant parts of the figure only once, before the loop.
figure(1)
m = plot(momentvalues(1,:),momentheader); % plotting only step 1
xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)])
xlabel('Moment (kN.m)')
ylabel('Length of pile (m)')
% loop from step 2 ahead
for k = 2:length(momentvalues)
pause(1); % use pause to set the delay between shots
% use 'set' to change the x values
set(m,'Xdata',momentvalues(k,:));
drawnow
title(sprintf('Moment profile along pile at time 0.2%f',k))
end