对于时间序列图,如何将 x 轴设置为没有周末的日历时间

2024-03-30

我想绘制一个时间序列(外汇期货合约的定价数据)。时间给出yyyymmdd HH:MM:SS字符串格式。价格在double.

该时间序列跨越一周多。但是,数据点的时间戳始终是工作日。是否有内置方法可以显示适当的 x 轴标签和缩放比例但没有周末?

我目前可以通过将字符串中的时间戳转换为来显示时间序列datenum https://www.mathworks.com/help/matlab/ref/datenum.html并自动排列 x 轴datetick https://www.mathworks.com/help/matlab/ref/datetick.html。但我想知道如何排除 x 轴上的周末。或者从网格中排除没有数据的任何延长的时间间隔。

如需视觉效果,请参阅最后的示例。如果可以排除由于包括周末(4 月 10 日是美国假期)而导致的大量空白,则通过关注实际有数据的位置,该图可以变得更加清晰。

数据点本身仅限于工作日。但之间plot and datetick,只要时间序列跨越一周,就会创建周末的网格点。datetick很有用,因为它可以检测 x 轴网格的适当缩放比例并一次性应用相应的网格标签。如果你看到datetick作为解决方案的一部分,有没有办法在使用后删除特定的网格点datetick?

Example:

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

如果您有兴趣修改相同的图,请通过 c&p 将数据检索到 Matlab cmdpastebin https://pastebin.com/3ZAjSF0d。上面相同的行将产生下面的图。


没有这样的功能。可能是因为这本质上使 x 轴不连续,这(通常)是不可取的。

您必须创建一个合成 x 轴,通过整理周末(或者更确切地说是非工作日)来实现此目的。 这是标准图(工作日为蓝色)

% 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手动:

T = T(lg);
C = C(lg);
% plot without time-axis
plot(C,'o')

% --- get ticks
xTick = get(gca,'XTick');
% get which ticks are integers
lg = isreal(xTick) & rem(xTick,1)==0;
XTick_new = xTick(lg);
% --- create new tick label
xTickLbl_new_num = NaN(size(XTick_new));
% make sure they are within the limits
lg = XTick_new >= 1 & XTick_new <= length(T);
xTickLbl_new_num(lg) = T(XTick_new(lg));
% convert to string (arbitrary format)
xTickLbl_new_str = strings(size(xTickLbl_new_num));
xTickLbl_new_str(lg) = datestr(xTickLbl_new_num(lg),'ddd');
% set new label
set(gca,'XTick',XTick_new,'XTickLabel',xTickLbl_new_str);

Have a look on the results: left the standard version and on the right the version with manually set tick-labels. comparison

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于时间序列图,如何将 x 轴设置为没有周末的日历时间 的相关文章

  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000
  • MATLAB 变量传递和惰性赋值

    我知道在 Matlab 中 当将新变量分配给现有变量时 会进行 惰性 评估 例如 array1 ones 1 1e8 array2 array1 的价值array1不会被复制到array2除非元素array2被修改 由此我推测Matlab中
  • 帮助我理解FFT函数(Matlab)

    1 除了负频率之外 FFT 函数提供的最小频率是多少 是零吗 2 如果它为零 我们如何在对数刻度上绘制零 3 结果总是对称的 或者只是看起来是对称的 4 如果我使用abs fft y 来比较2个信号 我是否会失去一些准确性 1 除了负频率之
  • Matlab:2行10列的子图

    如何在 matlab 中绘制 20 幅图像 2 行 10 列 我知道我必须使用 子图 功能 但我对给出的参数感到困惑 我尝试给予 子图 2 10 行索引 列索引 但它似乎不起作用 请帮忙 的前两个参数subplot函数分别给出图中子图的总行
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • Mathworks 生成 Matlab HTML 文档的方法是什么?

    我正在开发共享的 Matlab 代码 我们希望在本地网络中将生成的文档作为可搜索的 HTML 文档共享 我知道以下生成文档的方法 编写一个类似于 C 文件的转换器 这是在中完成的将 Doxygen 与 Matlab 结合使用 http ww
  • 拟合具有扭曲时基的正弦波

    我想知道在 Matlab 中拟合具有扭曲时基的正弦波的最佳方法 时间失真由 n 阶多项式 n 10 给出 其形式为t distort P t 例如 考虑失真t distort 8 12t 6t 2 t 3 这只是幂级数展开 t 2 3 这将
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • 霍夫变换检测和删除线

    我想使用霍夫变换检测图像中的线条 但是我不想绘制线条 而是想删除原始图像中检测到的每条线条 image imread image jpg image im2bw image BW edge image canny imshow BW fig
  • Matlab下降低图像质量

    问候 我正在尝试找到一种简单的方法来处理图像 以便将其质量从 8 位降低到 3 位 实现这一目标的最简单方法是什么 干杯 如果要线性缩放 只需将每个像素值除以 255 7 即 如果原始图像存储在矩阵 I 中 则让低分辨率图像 J I 255

随机推荐

  • Java 编译器:停止抱怨死代码

    出于测试目的 我经常开始在现有项目中输入一些代码 因此 我想要测试的代码位于所有其他代码之前 如下所示 public static void main String args char a System out println int a
  • C++ 变量定义中的“class”关键字

    在有人问之前 是的 这是家庭作业的一部分 是的 在问之前我做了很多谷歌搜索 我花了最后一个小时在谷歌上用很多很多不同的关键词进行了集中搜索 但就是找不到任何东西 那么问题来了 下面的变量定义是什么意思 class MyClass myCla
  • 为什么错误回溯显示编辑后的脚本而不是实际运行的脚本?

    背景 考虑以下最小示例 当我保存以下脚本并从终端运行它时 import time time sleep 5 raise Exception 该代码将在休眠五秒后引发错误 并留下以下回溯 回溯 最近一次调用最后一次 文件 test minim
  • 动态 REST API 调用

    我已经成功访问 页面上的静态API数据 我现在正在尝试访问 dynam API 我已经阅读了一些访问动态API的文档 但是API提供商的文档与在线资源不同 我不确定必须在现有代码中进行哪些更改才能访问动态 API 数据 这是来自 API 提
  • 初始化时0.0f的意义是什么(在C语言中)?

    我见过人们初始化浮点变量的代码 如下所示 float num 0 0f 这与仅执行以下操作之间有显着差异吗 float num 0 谢谢 浮动 x 0具有从 int 到 float 的隐式类型转换 浮点数 x 0 0f没有这样的类型转换 浮
  • Swift:从元组数组中获取元素数组

    我有一个像这样的元组数组 var answers number Int good Bool 我想从中获取一个数字成员数组 就像我做了类似的事情 answers number gt Should give Int of all values
  • -fPIC 标志可以增加多少开销?

    Question 我正在测试一个计算曼德尔布罗分形的简单代码 我一直在根据检查点是否属于曼德尔布罗特集的函数中的迭代次数来检查其性能 令人惊讶的是 添加后我的时间出现了很大的差异 fPIC旗帜 据我了解 开销通常可以忽略不计 我遇到的最高开
  • C++ 中最大的整数数据类型?

    C 中最大的整数数据类型是什么 最大的standardC 整数类型是long C has a long long C 0x 也会添加它 当然您可以实现自己的自定义整数类型 甚至可能是 BigInt 类 但从技术上来说 考虑到内置的整数类型
  • 行程解压

    这里是CS学生 我想编写一个程序来解压缩根据游程编码的修改形式进行编码的字符串 我已经为其编写了代码 例如 如果字符串包含 bba10 它将解压缩为 bbaaaaaaaaaa 如何让程序识别字符串的一部分 10 是整数 谢谢阅读 一个简单的
  • 为什么即使在哈希上调用 Enumerable#find/#detect 也会返回数组?

    The 的文档Enumerable find detect http ruby doc org core 2 0 Enumerable html method i find says find ifnone nil obj block ob
  • 使用未分配的变量?

    当声明 paymentstatus 为空或在 if 语句中具有值时 我收到错误使用未分配的变量 ps 我想我已经声明了 ps 但显然我做错了什么 为什么编译器会抱怨这个 这是上下文中的错误 public IList
  • 如何求最大生成树?

    与克鲁斯卡尔最小生成树算法相反的算法是否适用 我的意思是 每一步选择最大权重 边缘 还有其他找到最大生成树的想法吗 是的 它确实 计算网络 G 的最大权生成树的一种方法 由于克鲁斯卡尔 可以总结如下 按权重将 G 的边按降序排序 令 T 为
  • Netbeans 告诉我删除 null 比较,但这会破坏我的代码

    我有以下简单的代码来模拟猫狩猎 import java util Arrays import java util LinkedList public class HuntigSaeson int hunger 4 int level 3 L
  • setInterval 似乎不起作用?

    这段代码似乎不起作用 我正在尝试创建一个可用聊天室的动态列表 每 10 秒更新一次 我还希望用户能够设置参数来过滤要显示的房间 我正在使用这段代码 但由于某种原因它似乎不起作用
  • 无法查看 Service Worker 日志

    看不到我的 Service Worker 的日志 以下是我尝试打开已注册和正在运行的服务工作人员日志的步骤 Open chrome serviceworker internals 单击开始并检查 刷新检查窗口 等待日志出现 但是 两者chr
  • 在 coreos 上启动 calicoctl 容器

    我有 CoreOS 测试版 1153 4 0 我正在尝试运行 calicoctl 来检查我的 calico 网络是否配置正确 所以我尝试使用以下命令运行 calicoctl rkt 容器rkt run quay io calico ctl我
  • Rails ActiveRecord:如何在 jsonb 上使用带双引号的绑定变量

    我有一个 postgres jsonb 查询如下 Blog where upload data gt name name 它可以工作 但会破坏构建 因为优秀的刹车员指出了可能的 SQL 注入风险 如果我使用绑定变量 Blog where u
  • 类型转换为 Dalvik 格式失败:无法执行 dex:包装器未首先正确加载

    当我在 Eclipse 中使用 Android SDK 和 AVD Manager 时 我遇到过各种奇怪的错误 就像标题中的错误一样 一般来说 我只是拔掉手机插头 然后重新插入 或者关闭并重新打开 Eclipse 但这很令人沮丧 显然Con
  • 浏览器不遵循 AJAX 响应的重定向(PHP 生成的响应使用 CAS 身份验证)

    好吧 看来我最初的问题犯了一个错误 因此 这里有一些更正 答案仍然适用 因为当协议更改为 HTTPS SSL 时 第二个重定向就会停止 就我而言 重定向发生了多次 并且浏览器不遵循第二次重定向 遵循第一个重定向 但返回错误 我一直读到包含重
  • 对于时间序列图,如何将 x 轴设置为没有周末的日历时间

    我想绘制一个时间序列 外汇期货合约的定价数据 时间给出yyyymmdd HH MM SS字符串格式 价格在double 该时间序列跨越一周多 但是 数据点的时间戳始终是工作日 是否有内置方法可以显示适当的 x 轴标签和缩放比例但没有周末 我