MATLAB中的动态图正在更改我的刻度标签
大家好,我正在尝试绘制一个Y轴刻度线在-90到90之间的动态条形图。在非动态条形图上执行此操作时,记号标签会正确显示。一旦我让它充满活力,它们就到处都是 希望有人能看到我哪里出了错MATLAB中的动态图正在更改我的刻度标签,matlab,matlab-figure,Matlab,Matlab Figure,大家好,我正在尝试绘制一个Y轴刻度线在-90到90之间的动态条形图。在非动态条形图上执行此操作时,记号标签会正确显示。一旦我让它充满活力,它们就到处都是 希望有人能看到我哪里出了错 % Generate a random vector of -90 to +90 to simulate pitch. pitch = 90*rand(1) - 90*rand(1); %Static bar graph, y tick marks are working here subplot(2,1,1);
% Generate a random vector of -90 to +90 to simulate pitch.
pitch = 90*rand(1) - 90*rand(1);
%Static bar graph, y tick marks are working here
subplot(2,1,1);
bar(pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
title('Pitch');
%Dynamic bar graph, y tick marks are not working here
subplot(2,1,2);
barGraph = bar(pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
title('Pitch');
for j=1:1000,
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
drawnow;
pause(0.1);
end
只需在循环之前添加
按住
。(我使用的是Matlab2014a)只需在循环之前添加按住
。(我使用的是Matlab2014a)只需在循环之前添加按住
。(我使用的是Matlab2014a)只需在循环之前添加按住
。(我正在使用MATLAB 2014a)方法1
将2个集合(gca…
行移动到循环中,在集合(..'YData'..)之后和绘图之前
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
drawnow;
pause(0.1);
end
方法2
正如@Dev iL所建议的,使用按住
,通过循环保持轴属性。
但是使用hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用hold-off
将解决此问题
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
drawnow;
pause(0.1);
end
hold off
方法3(不好)
在循环之前,将属性YDataSource
设置为'pitch'
。在循环内部,使用刷新数据更新图形。
还需要保持
和保持
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
refreshdata;
pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它
关于循环迭代器j
j
,以及i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是
改用ii
和jj
。方法1
将2个集合(gca…
行移动到循环中,在集合(..'YData'..)之后和绘图之前
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
drawnow;
pause(0.1);
end
方法2
正如@Dev iL所建议的,使用按住
,通过循环保持轴属性。
但是使用hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用hold-off
将解决此问题
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
drawnow;
pause(0.1);
end
hold off
方法3(不好)
在循环之前,将属性YDataSource
设置为'pitch'
。在循环内部,使用刷新数据更新图形。
还需要保持
和保持
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
refreshdata;
pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它
关于循环迭代器j
j
,以及i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是
改用ii
和jj
。方法1
将2个集合(gca…
行移动到循环中,在集合(..'YData'..)之后和绘图之前
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
drawnow;
pause(0.1);
end
方法2
正如@Dev iL所建议的,使用按住
,通过循环保持轴属性。
但是使用hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用hold-off
将解决此问题
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
drawnow;
pause(0.1);
end
hold off
方法3(不好)
在循环之前,将属性YDataSource
设置为'pitch'
。在循环内部,使用刷新数据更新图形。
还需要保持
和保持
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
refreshdata;
pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它
关于循环迭代器j
j
,以及i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是
改用ii
和jj
。方法1
将2个集合(gca…
行移动到循环中,在集合(..'YData'..)之后和绘图之前
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
drawnow;
pause(0.1);
end
方法2
正如@Dev iL所建议的,使用按住
,通过循环保持轴属性。
但是使用hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用hold-off
将解决此问题
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
set(barGraph,'YData',pitch);
drawnow;
pause(0.1);
end
hold off
方法3(不好)
在循环之前,将属性YDataSource
设置为'pitch'
。在循环内部,使用刷新数据更新图形。
还需要保持
和保持
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on
for jj=1:20
pitch = 90*rand(1) - 90*rand(1);
refreshdata;
pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它
关于循环迭代器j
j
,以及i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是
改用ii
和jj
。这似乎是个bug。看看这里,这似乎是个bug。看看这里,这似乎是个bug。看看这里,这似乎是个bug。看看这里,如果脚本要运行超过1次,还需要在循环后添加延迟
,否则图表将结束意外分层。如果脚本要运行超过1次,则还需要在循环后添加延迟
;否则图形将意外叠加。如果脚本要运行超过1次,则还需要在循环后添加延迟
;否则图形将意外叠加。还需要添加<如果脚本要运行1次以上,则代码>在循环后暂停
;否则,图形将