我正在寻找一种方法来添加动态迁移数据的动态更新图(地点与时间)分隔连续几天的垂直分界线。部分挑战在于,这些分隔线的数量随着绘图域扩展以显示更多时间数据而发生变化:例如,随着绘图中天数从3增加到5,分隔线的数量增加了2个。在MATLAB中:XData和YData如何用更改的行数更新?
的最小代码示例中,写在MATLAB,如下所示:在已经注释掉两条线
xcols = [1; 1];
ycols = [0; 1];
figure(4)
clf
h.divs = plot(xcols,ycols,':k');
xlabel('time')
ylabel('location')
for ii=2:6
xcols(:,end+1) = [ii; ii];
ycols(:,end+1) = [0; 1];
% set(h.divs, 'XData', xcols, 'YData', ycols);
% set(h.divs, {'XData'}, num2cell(xcols',2), {'YData'}, num2cell(ycols',2));
drawnow
pause(1)
end
问题中心。如果我在第一个评论中尝试用每个新的分隔符集(用2 x DividerCount矩阵xcols和ycols给出)来更新XData和YData,那么我会收到一个错误消息,这些输入“必须是一个数值类型的向量”。如果我在第二行中使用单元格数组来解决这个问题(根据this Stack Overflow post和this MATLAB Newsgroup post),那么代码将返回一个错误,即“单元格数组句柄维度必须与句柄向量长度匹配”,只要分隔符的数目变化。
哈克解决方案当然是可能的。例如,可以将分隔线绘制为水平和垂直线段的单线,其中水平线段放置在绘图的y轴限制的上方和下方。或者可以使用固定数量的分隔器,其中一些分隔器绘制在图的x轴限制之外。问题在于是否存在一种非hacky方法 - 可以在循环的每次传递中在同一图中绘制相同样式的潜在变化数量的线条。
+0
欢迎来到StackOverflow。既然你的问题已经被顶线加上一点初始化代码('xcols','ycols',实际情节,可能是'xcols'的更新)所覆盖,我会缩短代码位,以确保只有这些基本的部分。另见[mcve]。 –
+0
感谢您的这个优秀的提示。 (我只在原始问题中包含更多代码,因为我不确定哪些细节可能与常规修复相关。)我简化了我的描述和代码,以便更好地引导您的答案。 –