如何在Matlab中绘制奇怪的时间戳

4

我有一个相当简单的任务。 我只需要像那样做些什么。

plot(stampy{1:5},data{2}(1:5))

然而,使用 stampy{1:5} 我有五个独立的 ans,而且 data{2}(1:5) 似乎适合绘图。我尝试过像这样的 循环

cc=zeros(1,10);
for i=1:10
     cc(i) = stampy{i}
end

但它并没有起作用。我不知道,似乎这是一个非常简单的任务。 有人能提供解决方案吗? 我的数据是这种形式:
>> stampy{1:5}
ans =
21-Sep-2016 05:52:00
ans =
21-Sep-2016 05:53:00  
ans =
21-Sep-2016 05:54:00
ans =
21-Sep-2016 05:55:00
ans =
21-Sep-2016 05:56:00

并且
>> data{2}(1:5)

ans =

  -32.3750
  -25.0000
  -25.0000
  -25.0000
  -25.0000

2
看起来您还没有在所有问题中接受任何答案。请花些时间,在所有问题上标记解决您问题的最有帮助的答案为已接受,方法是点击答案左侧的**将其变为绿色。如果您喜欢,您也可以通过点击**来点赞。祝好运! - Sardar Usama
3个回答

3
你可以使用 datenum 将每个日期转换为日期编号,并将其用作 x 轴。然后,你可以使用 datetick 指定要用于刻度标记的格式。这样做的好处是它适用于 MATLAB 的大多数版本,并处理非均匀间隔的日期。
plot(datenum(stampy), data{2}(1:5))
datetick('x', 'HH:MM:SS')

enter image description here


2

如果你想绘制时间轴,可以使用 datetime 类型的变量:

% the following line converts stampy to a time vector:
sy = datetime(stampy,'InputFormat','dd-MMM-yyyy HH:mm:ss');
plot(sy,data{2}(1:5))

1
虽然datetime类具有更多的功能,但您不必使用它。在R2014b引入datetime类之前,就已经存在像datetick这样的函数了。 - sco1
@excaza 这只是措辞不当,我已经改正了。 - EBH

2

只需绘制您的数据,并将 Xticks 重命名如下:

plot(data{2}(1:5));
set(gca,'XTick',1:5,'XTickLabel',{stampy{1:5}});

输出:

output


非常感谢你们两位的建议。对我很有帮助!你们有没有想法如何弯曲时间戳角度?谢谢!
绘制图表(data{2}(1:5)); 设置(gca,'XTick',1:5,'XTickLabel',{stampy{1:5}});
- user2156115
使用 hg.axes/set 时出错 对于类 'axes' 的实例来说,属性名 'XTickLabelRotation' 不可访问。matlab 出错(第20行) set(gca, 'XTickLabelRotation', 45); - user2156115
1
@user2156115 XTickLabelRotation 是在Matlab R2014b中引入的,也许你使用的是早期版本? - EBH
@user2156115 你使用的是哪个版本的MATLAB?在FileExchange上有这个插件(http://www.mathworks.com/matlabcentral/fileexchange/8722-rotate-tick-label),你可以使用它。 - Sardar Usama
是的,各位,你们说得对,我使用的确实是早期版本 :) - user2156115
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接