[英]How to label points on X axis for a plot in Octave/MATLAB?
[英]How to plot datetime in x axis in MATLAB or Octave
在MATLAB或Octave中,我的数据具有以下日期/时间值格式:
12:00:34.626 AM 2/26/2017
在哪里HH:MM:SS:SSS [A或P] M [M] M / DD / YYYY
我想将其用于绘图上的x轴,并且我尝试使用datetick , datenum和datestr ,但没有任何一种可以使用此格式。
如何使用此格式化的值字符串标记我的x轴数据点?
我将使用这些功能的组合,即在绘制后在datnum之后加上datetick 。
首先,格式字符串必须为:“ HH:MM:SS.FFF AM mm / dd / yyyy”。
如果您需要更改格式,请参见以下内容: https : //au.mathworks.com/help/releases/R2016b/matlab/ref/datenum.html#inputarg_formatIn
然后使用datetick在图上转换为漂亮的格式。 https://au.mathworks.com/help/releases/R2016b/matlab/ref/datetick.html
因此,对于单个数据点=绘图,您可能具有:
xdatestr=['12:00:34.626 AM 2/26/2017'; '12:00:34.626 PM 2/26/2017']
xdatenum=datenum(xdatestr,'HH:MM:SS.FFF AM mm/dd/yyyy')
plot(xdatenum,[0 1])
datetick(gca)
还要注意datetime ,是完全独立的方式,并且使用不同的格式字符串约定。 http://au.mathworks.com/help/matlab/ref/datetime.html
您可以使用以下格式:
d = datetime('12:00:34.626 AM 2/26/2017','InputFormat','hh:mm:ss.SSS a M/dd/yyyy')
结果:
d =
26-Feb-2017 00:00:34
如果您还想看几分之一秒:
>> d.Second
ans =
34.626
对于存储在单元格数组中的多个日期字符串,只需将上面的字符串'12:00:34.626 AM 2/26/2017'
替换为单元格数组。
然后,您只需编写plot(d,y)
(其中y
是您的数据),便会以时间格式获得x轴。 您可以使用DatetimeTickFormat
属性进一步自定义此格式:
plot(d,1,'DatetimeTickFormat','hh:mm:ss.SSS a M/dd/yyyy')
您将获得:
另一个例子是这样。
date={'12:00:34.600 AM 2/26/2017','12:00:34.700 AM 2/26/2017','12:00:34.800 AM 2/26/2017','12:00:34.900 AM 2/26/2017'};
timeFormat='HH:MM:SS.FFF AM mm/dd/yyyy';
xdatenum=datenum(date,timeFormat);
data=0:3;
plot(xdatenum,data)
datetick('x',timeFormat,'keepticks')
view([-20,90])
为了避免x刻度重叠,我将图倾斜了一点。
您可以通过使用刻度属性来控制刻度数。
date={'12:00:34.600 AM 2/26/2017','12:00:34.700 AM 2/26/2017','12:00:34.800 AM 2/26/2017','12:00:34.900 AM 2/26/2017'};
timeFormat='HH:MM:SS.FFF AM mm/dd/yyyy';
xdatenum=datenum(date,timeFormat);
data=0:3;
plot(xdatenum,data)
datetick('x',timeFormat,'keepticks')
set(gca,'XTick',[min(xdatenum) max(xdatenum)])
set(gca,'XTickLabel',[date(1),date(end)])
在这里,我只做了两个最小日期和最大日期的勾选。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.