我有一个图表,其中x轴是从1
到1440
的矢量(一天中的分钟数)。我想知道是否有一些方法可以在x轴上使用小时数,同时仍然使用向量中的每个值。
例如:
1 would be marked 12 AM
60 would be marked 1 AM
答案 0 :(得分:2)
labels = {'12 AM', '1 AM', '2 AM', '3 AM' ...
'4 AM', '5 AM', '6 AM', '7 AM' ...
'8 AM', '9 AM','10 AM','11 AM'...
'12 PM', '1 PM', '2 PM', '3 PM' ...
'4 PM', '5 PM', '6 PM', '7 PM' ...
'8 PM', '9 PM','10 PM','11 PM'};
set(gca, 'xtick', 1:60:1440);
set(gca, 'xticklabel', labels);
答案 1 :(得分:1)
如果您不介意稍微更改绘图代码,可以使用datetick
,将给定轴上的标签转换为日期。您可以执行以下操作
x = 1:1440;
y = rand(1,1440);
plot(x/1440,y); % dividing minutes by 1440 is the same as converting to datenum
datetick('x','HHPM');
datetick
还为您提供'keeplimits'
或'keepticks'
的选项,分别保留现有情节的限制和标记。您可以通过更改格式字符串来更改刻度标签。上面的字符串结合了'HH'
格式,即一天中的小时(默认为24小时)和'PM'
格式,后者将小时数转换为12小时格式,并将AM或PM附加为适当。您可以阅读datetick
文档了解所有可能性。
答案 2 :(得分:0)
选项会尊重您原来的tick
位置,但会将其转换为您想要的格式:
set( gca , 'XTickLabel' , datestr( (get(gca,'XTick')/1440) , 'HH:MM PM' ) )
您可以查看datestr
帮助页面以查看您可以使用的所有其他格式(例如,如果您要删除分钟的显示)。
注意:请注意,这只会更改给定视图的现有刻度线的文本。它不会强制一个给定位置的刻度线(只使用当前位置),一旦放大或缩小它就会变为无效。这意味着每次更改轴X限制时都必须调用该指令。