对于时间序列图,如何将x轴设置为没有周末的日历时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于时间序列图,如何将x轴设置为没有周末的日历时间相关的知识,希望对你有一定的参考价值。
我想绘制一个时间序列(外汇期货合约的定价数据)。时间以yyyymmdd HH:MM:SS
字符串格式给出。价格在double
中。
时间序列跨越一周。但是,数据点的时间戳总是在工作日。 是否有内置方法显示适当的X轴标签和缩放比例,但没有周末?
我目前可以通过将字符串中的时间戳转换为datenum
并使用datenum
自动排列x轴来显示时间序列。但是我想知道如何在X轴上排除周末。或从没有数据的网格中排除任何延长的时间间隔。
有关视觉效果,请参见最后的示例。如果由于包括周末(4月10日是美国的假期)而可以排除较大的空白区域,则可以通过关注实际数据的位置来使该图变得更清晰。
数据点本身仅适用于工作日。但是在datetick
和datetick
之间,只要时间序列跨越一周,就会在周末创建网格点。 plot
很有用,因为它可以检测到x轴网格的适当缩放比例,并一次性应用相应的网格标签。如果您认为datetick
是解决方案的一部分,那么使用datetick
之后是否可以删除特定的网格点?
示例:
datetick
[如果您有兴趣修改相同的图,请通过c&p将数据从datetick
检索到Matlab cmd中。上面相同的线将产生以下图。
T=[7.378903958333334e+05;7.378967076388889e+05]; % converted from "20200409 09:30:00" and "20200415 16:59:00"
C=[0.7166;0.7090];
grid on
plot(T,C,'.')
xlim([min(T),max(T)])
datetick
没有此类功能。可能是因为这实际上使x轴不连续,这(通常)是不希望的。
您将必须创建一个合成的X轴,以通过整理周末(或者不是工作日)来实现此目的。这是标准图(工作日为蓝色)
pastebin
% create data
T = 7.3789e+05+(0:5:100)/10.';
C = rand(size(T));
% is a busniess day?
lg = isbusday(T);
% standard date plot
plot(T(lg),C(lg),'o', T(~lg),C(~lg),'o')
datetick('x','ddd')
查看结果:左侧为标准版本,右侧为带有手动设置刻度标签的版本。xTickLabel
以上是关于对于时间序列图,如何将x轴设置为没有周末的日历时间的主要内容,如果未能解决你的问题,请参考以下文章