你能帮助我解决以下问题吗?
我有大量的日内财务数据。更具体地说,关闭多天的每15分钟的股票价格。我在绘制数据的时间序列时面临一个问题。 这是我的系列的一个例子:
'29-Dec-2016 15:00:00' 62.8400000000000
'29-Dec-2016 15:15:00' 62.8300000000000
'29-Dec-2016 15:30:00' 62.8900000000000
'29-Dec-2016 15:45:00' 62.8550000000000
'29-Dec-2016 16:00:00' 62.8900000000000 (Closing of the market)
'30-Dec-2016 09:45:00' 62.7300000000000 (Opening of the market)
'30-Dec-2016 10:00:00' 62.2900000000000
'30-Dec-2016 10:15:00' 62.2400000000000
'30-Dec-2016 10:30:00' 62.0900000000000
'30-Dec-2016 10:45:00' 62.1100000000000
'30-Dec-2016 11:00:00' 62.3000000000000
'30-Dec-2016 11:15:00' 62.2300000000000
如果我绘制上面的子样本,matlab图将具有如下图所示的形式:
正如你可以看到Matlab绘制水平轴上的填充,以及市场平仓和市场开放之间的时间,这使得价格看起来很紧张。#/ p>
相反,如果我使用增加的观察数(例如1到100 ......),问题将被删除,如下图所示:
有没有办法避免"伸展"价格仍然在我的水平轴上有时间?
提前致谢。
答案 0 :(得分:0)
你可以这样做:
首先只绘制价格数据
plot(price)
然后设置XTickLabel:
set(gca,'XTickLabel',datevector)
这将使用您的数据设置X轴
你可以把它放在一个函数
中function plotprices(data)
datevector = data(:,1); %store dates in first column
price = num2cell(data(:,2)); %store prices in second column
plot(price)
set(gca,'XTickLabel',datevector)
答案 1 :(得分:0)
您可以在绘图上读取x刻度的位置,并用自己的字符串替换它们的标签。所以,假设:
a)y
有股票价格,
b)Date
有日期字符串,
您可以在第二个绘图的末尾添加以下代码,以获得您想要的内容:
% limit the x-axis such that all ticks are within the data range
xlim([1, length(y)]);
% read the marks of the x-ticks
xt=get(gca, 'XTick');
% this would place the x tick marks at the same locations
% that Matlab chose by default. If you want to place them
% at some other points, just assign those points to xt, e.g.
% xt = (1:10:length(y))
% replace the labels of the marks
set(gca, 'XTick', xt); % rewrite this in case you modify xt
set(gca,'XTickLabel',Date(xt))
BTW,一个可能更简单的选择是使用你的第一个图而不是实线,只使用标记。例如,plot(Date, y, '.')
;