如何将水平轴上的日期和时间放在MATLAB中的图形中的单独行中?

时间:2016-03-22 16:15:04

标签: matlab datetime plot

我正在绘制随机数据与日期时间字符串的图表。这些日期时间字符串都在一行中,并作为横轴上的标签。我希望日期显示在一行中,时间显示在另一行中。

下图描述了我的图表。我希望时间显示在日期之下。

enter image description here

我用来生成图表的代码如下所示:

figure
plot(sample(:,1),sample(:,2:5),'o')
tick=get(gca,'xtick');
set(gca,'xticklabel',datestr(tick,31))
drawnow()

如何让每个水平标签的时间显示在日期下方?

1 个答案:

答案 0 :(得分:0)

这有点像黑客,但你可以在日期和时间的空格之间的日期字符串中引入TeX命令\newline,然后将这些新字符串设置为{{1}勾选图中的标签。您需要将从X输出的字符数组转换为cellstr的字符串单元格数组,然后使用strrep执行从空格到datestr的替换}。

这样的事情应该有效:

\newline

当我使用样本图表时:

figure
plot(sample(:,1),sample(:,2:5),'o')
tick=get(gca,'xtick');
vals = cellstr(datestr(tick,31)); %// Change
new_vals = strrep(vals, ' ', '\newline'); %// New
set(gca,'xticklabel',new_vals); %// Change
drawnow()

运行代码后,我将此作为最终结果:

enter image description here

请注意,这假设plot(1:6, 1:6, 'r.'); 刻度线彼此间隔足够大。如果水平轴上有许多刻度,那么你的绘图看起来会很混乱。