Matlab 了解是否可以将日期时间X轴绘制到给定轴
我有一个matlab函数,它可以将Matlab 了解是否可以将日期时间X轴绘制到给定轴,matlab,datetime,plot,matlab-figure,Matlab,Datetime,Plot,Matlab Figure,我有一个matlab函数,它可以将(datetime,double)系列绘制到提供的轴上plotAxis。但是,如果plotAxis已包含(双精度,双精度)系列,则会出现错误: '数据输入必须与轴配置匹配。必须使用数字轴 具有数字数据输入或可转换为的数据输入 加倍。” 我知道我可以查询plotAxis.XAxis并确定它是DatetimeRuler还是numeriruler。如果是前者,那么我可以继续策划;如果是后者,那么我可以优雅地失败。但是,新轴的XAxis属性的默认类型似乎也是Numeri
(datetime,double)
系列绘制到提供的轴上plotAxis
。但是,如果plotAxis
已包含(双精度,双精度)
系列,则会出现错误:
'数据输入必须与轴配置匹配。必须使用数字轴
具有数字数据输入或可转换为的数据输入
加倍。”
我知道我可以查询plotAxis.XAxis
并确定它是DatetimeRuler
还是numeriruler
。如果是前者,那么我可以继续策划;如果是后者,那么我可以优雅地失败。但是,新轴的XAxis
属性的默认类型似乎也是NumericRuler
,在这种情况下,您可以在其上绘制datetime
(可能是因为没有其他现有的(双精度,双精度)
系列)
给定Axis对象,是否有一种通用方法来确定是否可以在其上绘制(datetime,double)
(当然,除了try
/catch
块)您描述它的方式(就我所测试的而言)标尺的类别不是要寻找的。对于不包含任何数据的新绘图,该类可以是NumericRuler
。然后,此标尺可以毫无问题地接受datetime
数据。但是,当轴包含横轴上的非datetime数据时,NumericRuler
将无法很好地处理其他数据类型并抛出错误。因此,测试标尺类型不是一条可行之路
我建议测试轴的子项的扩展数据中已经包含的数据类型:
ax = gca;
if all(cellfun(@(x) isempty(x) || isdatetime(x.XData), {ax.Children}))
% Ok to plot datetime
else
% Not ok to plot datetime, it will throw an error
end
这将测试两种情况之一:
datetime
数据子项
都属于日期时间
类型,因此可以绘制更多的日期时间
数据在
单元格中使用{ax.Children}
是因为轴的子对象
可能不适合于一个常规数组,因为它们的类型或维度不同;这正是我想要的-ax.Children和child.XData,谢谢