【发布时间】:2019-02-01 14:42:56
【问题描述】:
首先,我认为我找到的答案已经过时了:
- Excluding weekend gaps from financial timeseries plots
- Exclude Date Gaps in Time Series Plot in Matlab
- Datetick take into account NaN in plot
我的问题:
我已经根据包含这些日期的时间表创建了一个烛台图(格式为dd/mm/yyyy):
'25/01/2019'
'24/01/2019'
'23/01/2019'
'22/01/2019'
'21/01/2019'
'18/01/2019'
'17/01/2019'
'16/01/2019'
'15/01/2019'
'14/01/2019'
'11/01/2019'
'10/01/2019'
'09/01/2019'
'08/01/2019'
'07/01/2019'
'04/01/2019'
'03/01/2019'
'02/01/2019'
'28/12/2018'
'27/12/2018'
'26/12/2018'
'21/12/2018'
'20/12/2018'
'19/12/2018'
'18/12/2018'
还有这段代码:
candle(this.values);
这给了我这个情节:
如您所见,存在与非工作日相对应的间隙。
鉴于我对同一个问题找到的答案,我所做的是:
-
创建了两个数组,一个是日期,另一个是日期字符串:
this.dates = table2timetable(ticker(1:5:25,:)); %sort them out because were generated in reverse order this.dates = timetable2table(sortrows(this.dates(:,1))); this.dates = this.aux(:,1); this.lbl = datestr(this.aux{:,1},'dd/mm/yyyy'); -
获取gca对象设置X轴属性:
this.ax = gca; this.ax.XTick = this.dates{:,1}; this.ax.XTickMode = 'manual'; this.ax.XTickLabel = this.lbl;
结果是这样的:
所以属性设置正确,但差距仍然存在。
最后,我尝试设置 Timetable 属性 VariableContinuity 并调用 retime 函数以使用 NaN 数据生成缺失的日期条目,看看是否有帮助但结果相同:
this.values.Properties.VariableContinuity = {'event','event','event','event','event','event','event','event'};
this.values = retime(this.values,'daily');
我还能做些什么来隐藏这些差距?
【问题讨论】:
-
不清楚你想如何隐藏差距并保持连续的规模?或者您是否不在乎当您消除间隙时基于时间的 x 轴将不是线性的及时?从数据可视化的角度来看,我宁愿看到差距也不愿拥有不显示连续日期的日期轴!如果您不顾一切,可以将日期转换为分类,那么它们就不是日期,MATLAB 只会将它们视为类别而不是连续的尺度。
-
@Wolfie 这不是一个连续的规模,这是股票价格。我见过的每张股票图表(而且我见过很多)只显示工作日。我宁愿看不到差距。我并不绝望。不过,您是否意识到在我提到的帖子中曾经有一个明显不再有效的解决方案?我认为应该有一种解决方法或某种属性来帮助我完成这项工作。
-
@Wolfie 同样,当您进行技术分析时,没有这些差距会很有帮助。
标签: matlab matlab-figure candlestick-chart