其他日期都去哪儿了?
第一个问题的答案是 MATLAB 仅使用与 x 轴上默认 N 个刻度线相对应的前 N 个字符串。
“???错误使用 ==> 设置值必须单调递增。”
该错误告诉您您的日期刻度必须均匀分布。您可以获取 MATLAB 自动分配给您的图形的 x 刻度值,而不是使用与您的实际数据点对应的日期,将它们转换为文本,然后将日期重新分配为 x 刻度标签,如下所示:
% generate example unevenly spaced date vector
time = [now,now+1,now+25,now+28.5,now+36,now+40,now+51,now+65];
% generate random data points
data = rand(size(time));
% plot time vs data, storing the axes handle in the process
figure;
axH = axes;
plot(axH,time,data)
% get the x-axis tick locations
ticLoc = get(axH,'XTick');
% format tick labels (substitute any date format you wish)
ticLab = cellfun(@(x) datestr(x,'mm/dd'),num2cell(ticLoc),'UniformOutput',false);
% apply tick labels
set(axH,'XTickLabel',ticLab)
MATLAB 的内置函数datetick
也执行类似的操作。
但是,如果您之后进行缩放,您将无法获得准确的刻度标签。所以你可能想datetick2
在文件交换上使用。
如果您在将 Excel 中的日期元胞数组转换为数值数组时遇到问题,请使用:
dateNumeric = cell2mat(cellfun(@datenum,dateStrings,'UniformOutput',false));