用单元阵列标记x轴

时间:2013-04-02 16:37:14

标签: matlab

我一直在搜索各种论坛几个小时,但似乎不可能在matlab中做一个自动的excel ... 我使用uimport将xls文件导入到两个数组中(?total newbie),一个包含我的x轴的日期,另一个包含我想要绘制的值。

我有180个值。这些日期是每月三个日期,或多或少从2008年5月到现在,3月底。

使用

  
    

积(通过myNumbers)

         

集(GCA, 'XTickLabel',日期)

  

仅在我的x轴上放置2008年5月的日期! 所有其他日期都去了哪里?

改为使用

  
    

积(通过myNumbers)

         

集(GCA, 'XTICK',通过myNumbers, 'XTickLabel',日期)

  

给出错误消息 “???使用==>设置错误 价值必须单调增加。“

请帮忙!

2 个答案:

答案 0 :(得分:1)

  

所有其他日期都去了哪里?

第一个问题的答案是MATLAB只使用与x轴上默认N个刻度标记对应的前N个字符串。

  

“???使用==>设置错误值必须单调递增。”

错误告诉您日期标记必须均匀分布。您可以获取MATLAB自动分配给图表的x刻度值,将其转换为文本,然后将日期重新分配为x刻度标签,而不是使用与实际数据点对应的日期,如下所示:

% generate example unevenly spaced date vector
time = [now,now+1,now+25,now+28.5,now+36,now+40,now+51,now+65];
% generate random data points
data = rand(size(time));
% plot time vs data, storing the axes handle in the process
figure;
axH = axes;
plot(axH,time,data)
% get the x-axis tick locations
ticLoc = get(axH,'XTick');
% format tick labels (substitute any date format you wish)
ticLab = cellfun(@(x) datestr(x,'mm/dd'),num2cell(ticLoc),'UniformOutput',false);
% apply tick labels
set(axH,'XTickLabel',ticLab)

MATLAB的内置函数datetick的表现也相似。

但是,如果之后进行缩放,则不会有准确的刻度标签。因此,您可能希望在文件交换中使用datetick2

如果您在将Excel的单元格数组转换为数字数组时遇到问题,请使用:

dateNumeric = cell2mat(cellfun(@datenum,dateStrings,'UniformOutput',false));

答案 1 :(得分:0)

尝试set (gca,'XTickLabel',num2str(dates))

相关问题