编辑:正如Tasos 在较早的答案中所述,这是“OpenGL 无法处理将小数添加到大数时所涉及的精度的问题”。
从我的角度来看,这“只是”一个 Octave 错误,MATLAB(用 MATLAB Online 测试)没有显示出这种行为。x
看起来,当实际x
值相对较高时,Octave 存在小间隔的问题,参见。
subplot(2, 1, 1);
x = linspace(800000, 800000 + 2*pi, 100);
y = sin(x);
plot(x, y);
subplot(2, 1, 2);
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
对应的输出是:
看来,一些x
价值观正在“合并”!?我还没有深入搜索有关该问题的报告错误...
但是,要在您的情况下解决该问题,您可以尝试从 开始绘制数据0
,然后再调整xticklabels
:
% Data
ab = rand(96, 1);
figure(1);
% Plot without dates
subplot(3, 1, 1);
plot(ab);
xlim([1, 96]);
% Plot with dates (standard, faulty)
subplot(3, 1, 2);
dates = linspace(datenum('01-Nov-2020 00:00', 'dd-mmm-yyyy HH:MM'),
datenum('01-Nov-2020 23:45', 'dd-mmm-yyyy HH:MM'),
size(ab, 1))
plot(dates, ab);
datetick('x', 'dd-mm-yyyy HH:MM');
xlim([dates(1), dates(end)]);
% Plot with dates (custom, correct)
subplot(3, 1, 3);
# For plotting, subtract start date
dates_for_plot = dates - datenum('01-Nov-2020 00:00', 'dd-mmm-yyyy HH:MM')
plot(dates_for_plot, ab);
datetick('x', 'dd-mm-yyyy HH:MM');
# Add custom xticklabels with re-added start date
xlim([dates_for_plot(1), dates_for_plot(end)]);
xticklabels(cellstr(datestr(xticks + datenum('01-Nov-2020 00:00',
'dd-mmm-yyyy HH:MM'))));
那将是输出: