在MATLAB中使用datetick和keepticks

时间:2015-06-09 00:43:09

标签: matlab datetime matlab-figure

我想长度显示一个数组(24 * 60 * 60)。 x轴是一天的时间。

当我使用以下代码时,x轴显示00:00:00, 00:59:59, 01:59:59, ..., 23:59:59,但图中没有绘图。那是plot(1:length(A),A)没有效果。 (我也尝试打开/关闭hold切换,24 / 24+1

A = rand(1,86400);
x0 = datenum('00:00:00','HH:MM:SS');
x1 = datenum('23:59:59','HH:MM:SS');
xData = linspace(x0,x1,24+1);
plot(1:length(A),A);
set(gca,'XTick',xData);
datetick('x','HH:MM:SS','keepticks');

当我尝试以下代码时,可以正确显示绘图。但是,x轴变为00:00:00, 02:24:00, 04:48:00, ..., 21:36:00, 00:00:00

A = rand(1,86400);
x0 = datenum('00:00:00','HH:MM:SS');
x1 = datenum('23:59:59','HH:MM:SS');
xData = linspace(x0,x1,86400);
plot(xData,A);
datetick('x','HH:MM:SS','keepticks');

我也试过这个版本

A = rand(1,86400);
x0 = datenum('00:00:00','HH:MM:SS');
x1 = datenum('23:59:59','HH:MM:SS');
xData = linspace(x0,x1,86400+1);
plot(xData,[A,0]);
datetick('x','HH:MM:SS','keepticks');

x轴仍然是00:00:00, 02:24:00, 04:48:00, ..., 21:36:00, 00:00:00,图表可以正常显示。

有没有办法将x轴设置为00:00:00, 01:00:00, 02:00:00, ..., 23:00:00, 00:00:0000:00:00, 00:59:59, 01:59:59, ..., 23:59:59

非常感谢!

1 个答案:

答案 0 :(得分:0)

首先在[1,numel(A)]区间进行绘图,然后在[xData(1),xData(end)]设置刻度线,就会出现问题。

您可以通过在A

范围内绘制xData来解决此问题
A = rand(1,86400);
x0 = datenum('00:00:00','HH:MM:SS');
x1 = datenum('23:59:59','HH:MM:SS');
xData = linspace(x0,x1,24+1);
plot(linspace(x0,x1,numel(A)),A);     % change here
set(gca,'XTick',xData);
datetick('x','HH:MM:SS','keepticks');

另外,添加行

set(gca,'XTickLabelRotation',45); % or some angle

提高了刻度标签的可读性。