繁体   English   中英

Plot 在 Matlab 中具有 x 轴类型作为日期时间的对数 y 轴

[英]Plot with logarithmic y axis having x axis type as datetime in Matlab

我必须构建一个带有对数 y 轴的半对数 plot。 我的 x 轴类型是日期时间。 一般来说,要做到这一点,可以使用符号学命令。 下面编写的示例代码给出了我想要完成的要点:

clear;clc;close
StartDate = datenum('12-Oct-2012 16:50:00');
EndDate = datenum('12-Oct-2012 17:50:00');
NoOfYAxisDataPoints=20;
NoOfTickMarks=5;
xAxisData = linspace(StartDate,EndDate,NoOfYAxisDataPoints);
yAxisData=linspace(1,25,NoOfYAxisDataPoints);
figure
semilogy(xAxisData,yAxisData)
xTickData = linspace(StartDate,EndDate,NoOfTickMarks);
ax = gca;
ax.XTick = xTickData;
datetick('x','HH:MM','keepticks')

这里 x 和 y 轴数据都是双精度类型。 但是,如果 x 轴数据不是双倍的,而是日期时间类型,我该如何实现我的目标,如下所示:

Year = 2012;Month = 10;Day = 12;
Hours = 16;Minutes=(50:5:110)';Seconds= 00;
Time=datetime(Year,Month,Day,Hours, Minutes, Seconds);
figure
plot(Time,linspace(1,25,13))
xTickData = linspace(datenum(Time(1)),datenum(Time(end)),NoOfTickMarks);
ax = gca;
ax.XTick = xTickData;
datetick('x','HH:MM','keepticks')

当我将 plot 更改为符号学时,我收到一条错误消息“使用符号学时出错。 “行”中不支持非数字数据”。 但是,符号学的文档指出“Xn 中的值可以是数字、日期时间、持续时间或分类值。 Yn 中的值必须是数字。”。 即使我的 x 轴值是日期时间类型,我也会收到此错误。 我究竟做错了什么? 我如何完成这项任务?

我正在使用 Matlab2016a

听起来您的 Matlab 版本不支持datetime作为semilogy的 x 轴。 至少 R2019b 对我来说很好用。 您可以在plot之后轻松更改 y 比例:

ax.YScale = 'log';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM