我正在尝试制作一个程序,在一段时间内显示来自经纪人的实时图表数据。这段时间可以是例如5秒或15分钟。
我制作了一个GUI和一个计时器。程序启动时,第一个绘图将转到GUI中的.dinfo {
position: relative;
bottom: 90px;
right: 50px !important;
}
。但是,所有更新的图(来自计时器)都会出现一个新图(只有一个),但不会进入图中的图。
附上一些代码:
这是在GUI .m文件的axes
openingFcn
功能handles.timer = timer(...
'ExecutionMode', 'fixedRate', ... % Run timer repeatedly
'Period', 5, ... % Initial period is 5 sec.
'TimerFcn', {@updateChart,hObject}); % Specify callback
guidata(hObject,handles)
axes(handles.axes1);
candle(highBid, lowBid, closeBid, openBid);
start(handles.timer);
:
updateChart
有关如何在GUI窗口更新图表的任何建议吗?
答案 0 :(得分:0)
我找到了解决问题的方法。事实上,任何类型的高级绘图功能都会发生同样的事情。我不得不使用plot
函数重现您的问题,行为如您所述。
您必须将 HandleVisibility
的figure
设置为on
(而不是默认设置callback
)。如果您正在使用GUIDE
,则必须直接在图属性检查器中从GUIDE
设置它(出于某些不明原因,如果在初始化代码中稍后设置它,则它不起作用):
此设置会让timer
回调可以看到figure
子对象,因此plot
命令不会决定创建一组新的axes
& figure
面对隐形的人时。{/ p>
当使用正确的目标句柄指定axes
命令时,总是在右plot
刷新绘图。对于支持在参数中传递目标axes
的图形函数,语法为:
% infallible syntax (when allowed)
plot( data2plot , 'Parent',targetAxesHandle)
总是优于您使用的那个(设置axes
有效,然后在当前有效axes
中绘图)
% this syntax may fail to plot in the right "axes" somtimes, as you observed
axes(targetAxesHandle);
plot( data2plot )
现在阅读特定绘图函数candle
的文档,我没有找到可以传递axes
句柄的线索,所以对于这种类型的函数,你必须求助于在这篇文章的顶部给出的解决方案。 但是,如果您曾向工具箱的编写者提供一些反馈,我强烈建议告诉他们这个重要的缺失功能。
注2:
您不必在每个情节之前致电hold on
。如果你知道你将永远"添加"在图中,您可以在初始化代码中一劳永逸地设置它:
set(handles.axes1,'Nextplot','add') % set "Hold on" permanently for "axes1"
如果你想删除锁定的保留,只需设置:
set(handles.axes1,'Nextplot','replace') % set "Hold off" permanently for "axes1"