Matlab如何从图表中删除周末

问题描述

我想绘制一个 x 轴是日期时间的折线图。但图表中存在周末缺口。我想知道如何消除周末的间隙。


enter image description here

figure
plot(data.DateTime(1:833),data.diff(1:833),'b');
hold on
plot(data.DateTime(834:970),data.diff(834:970),'r');
hold on
plot(data.DateTime(971:1546),data.diff(971:1546),'b');
hold off

解决方法

您可以使用 weekday 来过滤您的日期,以仅包含不是 6 或 7(星期六或星期日)的一周中的天数

days = datetime(2021,5,0:31);
days_weekdays_only = days(and(weekday(days)~=1,weekday(days)~=7));

这会将日期数据过滤为仅包含周一至周五的日期。

然后绘制过滤后的数据。

编辑:您可以根据过滤数据的索引绘制值,然后更改 x 轴标签以匹配日期时间字符串。这样它会跳过周末,但 x 轴仍会显示日期时间。

days = datetime(2021,0:31);
weekdays = days(and(weekday(days)~=1,weekday(days)~=7));
data = randi(5,length(days),1);
data_weekdays = data(and(weekday(days)~=1,weekday(days)~=7));
idx = 1:length(weekdays);
plot(idx,data_weekdays)
set(gca,'XTickLabel',datestr(weekdays));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...