从文件中绘制数据

时间:2013-01-10 21:15:02

标签: matlab

  

可能重复:
  Calculations of files

Day              price1          price2

2/2/2000         10                15

3/2/2000         12                18

4/2/2000         14                19

我如何绘制x = day和y = price1?

file = xlsread('example.xls');

x = file(:,1);

y = file(:,2);


plot(x,y);

它没有给出x行中的天数,它给出了2/2/2000的数字0,1,2

3 个答案:

答案 0 :(得分:1)

您可以使用日期字符串标记图中的xtick标记。首先,我们需要使用datestr将日期编号转换为日期标记。

[file, text] = xlsread('example.xls');
x = file(:, 1);
y = file(:, 2);
x0 = datenum(2000, 2, 2);
cal = cellstr(datestr(x + x0));

然后我们可以绘制并标记刻度线。

plot(x, y);
set(gca(), 'xtick', 1 : length(y), 'xticklabel', cal);;

答案 1 :(得分:1)

获取x轴显示日期的最新方法是通过datetick函数。我曾经手动做过,因为这个问题的其他答案建议做,直到我发现这个奇妙的功能。

将以下示例剪切并粘贴到Matlab脚本中并逐行运行:

y = randn(4, 1); %# Simulate random observations
Dates = {'1/1/2000', '2/1/2000', '3/1/2000', '4/1/2000'}; %# Build a vector of date strings
DatesNum = datenum(Dates, 'dd/mm/yyyy'); %# Convert date strings to date numbers
plot(DatesNum, y); %# Plot the data
datetick('x', 'dd/mm/yyyy'); %# Convert date numbers on plot to string format

最后一行基本上是“在当前图表的x轴上,以日期时间格式显示数字,使用格式字符串dd / mm / yyyy”。

熟悉此示例的工作原理后,您应该能够将此示例调整为您的代码。

答案 2 :(得分:0)

如果您没有可用的Excel COM服务器(如果您在unix / linux上运行,则可能就是这种情况),日期将显示为Excel序列日期编号(整数)。这些与MATLAB日期序列号不同。它们可以使用x2mdate()转换:

file = xlsread('example.xls')
file(:,1) = x2mdate(file(:,1))
set(gca,'Xtick',file(:,1),'XTickLabel',datestr(file(:,1)))

这里我假设您的日期列中的日期被Excel / LibreOffice格式化为日期而不是字符串。