Matlab:日内时间序列绘图问题

时间:2017-01-12 17:22:26

标签: matlab plot timeserieschart

你能帮助我解决以下问题吗?

我有大量的日内财务数据。更具体地说,关闭多天的每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图将具有如下图所示的形式:

Picture 1 (time as X)

正如你可以看到Matlab绘制水平轴上的填充,以及市场平仓和市场开放之间的时间,这使得价格看起来很紧张。#/ p>

相反,如果我使用增加的观察数(例如1到100 ......),问题将被删除,如下图所示:

Picture 2 (no time as X)

有没有办法避免"伸展"价格仍然在我的水平轴上有时间?

提前致谢。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

首先只绘制价格数据

plot(price)

然后设置XTickLabel:

set(gca,'XTickLabel',datevector)

这将使用您的数据设置X轴

enter image description here

你可以把它放在一个函数

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, '.');