如何用日期标记 x 轴?
How to label x-axis with dates?
我似乎无法弄清楚如何在 Matlab 中绘制不按数字顺序排列的日期。我需要的日期是从 1 月 22 日到 2 月 1 日,但是当我把它放在 Matlab 中时,它从 1 日开始按数字顺序排列。所以我想知道如何获得它以便它按照我的列表顺序排列。
这是我编写的代码:
date = [22 23 24 25 26 27 28 29 30 31 1 2 3 4];
in_bed = [3 8 26 76 225 298 258 233 189 128 68 29 14 4];
convalescent = [0 0 0 0 9 17 105 162 176 166 150 85 47 20];
plot(date,in_bed,'*',date,convalescent,'*')
xlabel('Janurary -- Feburary')
ylabel('Number of Cases')
legend('Confined to bed','Convalescent')
title('Influenza Outbreak')
检查以下内容 link :http://www.mathworks.com/help/matlab/ref/datetick.html
ax1.XTick = xData;
datetick(ax1,'x','mm','keepticks')
ax2.XTick = xData;
datetick(ax2,'x','mmm','keepticks')
首先,使用下面的xData
代替plot
中的date
:
startDate = datenum('01-22-2014');
endDate = datenum('02-04-2014');
xData = linspace(startDate, endDate, endDate - startDate + 1);
然后,使用 datetick
和 keeplimits
选项设置刻度:
datetick('x','mm-dd-yyyy','keeplimits');
您是否考虑过与实际的 date format 一起工作?这样你的时间参数就会按时间顺序排列。
先做一些准备工作:
days = [22 23 24 25 26 27 28 29 30 31 1 2 3 4];
months = [1 1 1 1 1 1 1 1 1 1 2 2 2 2];
year = repmat(2015,numel(days),1);
in_bed = [3 8 26 76 225 298 258 233 189 128 68 29 14 4];
convalescent = [0 0 0 0 9 17 105 162 176 166 150 85 47 20];
创建一个datevec
(日期向量)
dateVector = [year(:) months(:) days(:)];
并使用 datenum
:
将其转换为双精度值
date = datenum(dateVector);
绘制并修复 x 刻度线
plot(date,in_bed,'*',date,convalescent,'*')
set(gca,'XTick',date) %// if you leave this step, labeling is dynamic!
使用 datetick
定义标签格式:
datetick('x','dd-mm','keepticks')
瞧瞧:
我似乎无法弄清楚如何在 Matlab 中绘制不按数字顺序排列的日期。我需要的日期是从 1 月 22 日到 2 月 1 日,但是当我把它放在 Matlab 中时,它从 1 日开始按数字顺序排列。所以我想知道如何获得它以便它按照我的列表顺序排列。
这是我编写的代码:
date = [22 23 24 25 26 27 28 29 30 31 1 2 3 4];
in_bed = [3 8 26 76 225 298 258 233 189 128 68 29 14 4];
convalescent = [0 0 0 0 9 17 105 162 176 166 150 85 47 20];
plot(date,in_bed,'*',date,convalescent,'*')
xlabel('Janurary -- Feburary')
ylabel('Number of Cases')
legend('Confined to bed','Convalescent')
title('Influenza Outbreak')
检查以下内容 link :http://www.mathworks.com/help/matlab/ref/datetick.html
ax1.XTick = xData;
datetick(ax1,'x','mm','keepticks')
ax2.XTick = xData;
datetick(ax2,'x','mmm','keepticks')
首先,使用下面的xData
代替plot
中的date
:
startDate = datenum('01-22-2014');
endDate = datenum('02-04-2014');
xData = linspace(startDate, endDate, endDate - startDate + 1);
然后,使用 datetick
和 keeplimits
选项设置刻度:
datetick('x','mm-dd-yyyy','keeplimits');
您是否考虑过与实际的 date format 一起工作?这样你的时间参数就会按时间顺序排列。
先做一些准备工作:
days = [22 23 24 25 26 27 28 29 30 31 1 2 3 4];
months = [1 1 1 1 1 1 1 1 1 1 2 2 2 2];
year = repmat(2015,numel(days),1);
in_bed = [3 8 26 76 225 298 258 233 189 128 68 29 14 4];
convalescent = [0 0 0 0 9 17 105 162 176 166 150 85 47 20];
创建一个datevec
(日期向量)
dateVector = [year(:) months(:) days(:)];
并使用 datenum
:
date = datenum(dateVector);
绘制并修复 x 刻度线
plot(date,in_bed,'*',date,convalescent,'*')
set(gca,'XTick',date) %// if you leave this step, labeling is dynamic!
使用 datetick
定义标签格式:
datetick('x','dd-mm','keepticks')
瞧瞧: