0

可能重复:
文件的计算

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

4

3 回答 3

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 以日期时间格式显示数字”。

一旦您熟悉了此示例的工作原理,您应该能够使此示例适应您的代码。

于 2013-01-10T23:36:23.783 回答
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);;
于 2013-01-10T21:36:08.587 回答
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 格式化为日期,而不是字符串。

于 2013-01-10T21:35:33.330 回答