可能重复:
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
答案 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格式化为日期而不是字符串。