Matlab 2023a如何隐藏时间轴日期标注并实现AM/PM格式显示?
Matlab 2023a 时间轴格式调整解决方案
一、隐藏datetime绘图时的日期范围标注
你看到的轴下方日期标注是坐标轴的范围标签,直接修改坐标轴属性即可隐藏。在原有代码后添加以下两行:
mm = 0:minutes(5):hours(24); d = datetime() + mm; plot(d, randn(size(d))); xtickformat('hh:mm a'); % 隐藏日期范围标签 ax = gca; ax.XAxis.RangeLabels = {};
二、duration类型实现AM/PM显示的方法
duration仅表示时长,本身不包含AM/PM这类时段信息,默认无法直接显示,可通过两种方式实现需求:
方法1:转成datetime类型处理
构造一个基准日期(比如当天0点),把duration叠加到基准datetime上,再设置刻度格式:
dur = 0:minutes(5):hours(24); % 基于当天0点生成datetime数组 base_dt = datetime('today'); dt = base_dt + dur; plot(dt, randn(size(dt))); xtickformat('hh:mm a'); % 隐藏范围标签 ax = gca; ax.XAxis.RangeLabels = {};
方法2:手动生成带AM/PM的刻度标签
若不想用datetime,可提取duration的时分信息,手动转换为12小时制带AM/PM的字符串,再设置为刻度标签:
dur = 0:minutes(5):hours(24); plot(dur, randn(size(dur))); % 获取当前刻度对应的duration值 tick_durs = dur(xticks); % 转换为带AM/PM的字符串 tick_labels = char(datetime([0 0 0 hour(tick_durs) minute(tick_durs) 0], 'Format', 'hh:mm a')); xticklabels(tick_labels); % 隐藏范围标签 ax = gca; ax.XAxis.RangeLabels = {};
内容的提问来源于stack exchange,提问作者Robert Dodier
相关产品推荐
相关产品推荐

