1

可能重复:
创建带有标签的 Surf()

title('Euro Swap Rates');

xlabel('Maturity');

ylabel('Date');

zlabel('Swap Rate');

set(gca, 'YTick', 1:100:length(dates));

set(gca, 'YTickLabel', dates(1:100:length(dates))); 

set(gca, 'XTick', 0:10:length(rates_header)); 

set(gca, 'XTickLabel', rates_header(0:10:length(rates_header)));

剩下两个问题:1. 2.

  1. 我希望xTick 是1y然后10y20y...50y所以第一步大小适用9y10y所有剩余的点,除了最后2一个是55y60y所以应该间隔5y开,我该如何处理这个不规则的间距?
  2. 我希望日期仅显示每年 1 月 1 日和 6 月上旬(或最接近这些日期的工作日)。(目前,上面的代码只是获取向量的长度并按照指示对其进行拆分,我需要某种方式来查看数组中的值并进行相应的拆分。

好的,做到了,似乎是一种有点笨拙的方法,但它完成了

keydates={'01/01/2000','01/06/2000','01/01/2001','01/06/2001','01/01/2002','01/06/2002','01/01/2003','01/06/2003','01/01/2004','01/06/2004','01/01/2005','01/06/2005','01/01/2006','01/06/2006','01/01/2007','01/06/2007','01/01/2008','01/06/2008','01/01/2009','01/06/2009','01/01/2010','01/06/2010','01/01/2011','01/06/2011','01/01/2012','01/06/2012'};
 keydates2=datenum(keydates,'dd/mm/yyyy');
 dates2=datenum(dates,'dd/mm/yyyy');
 [index]=ClosestDate(dates2,keydates2);
 ytick = index;
 yticklabels = keydates;
 set(gca, 'YTick', ytick); 
 set(gca, 'YTickLabel', yticklabels);

ClosestDate 是我在 dates2 中查找第一个日期的函数,它比 keydates2 中的每个日期都多。

4

1 回答 1

0

对于第一季度,只需XTick完全按照您的描述设置属性:[编辑:将双引号 (") 的错误使用更改为单引号 (')]

xtick = [1, 10, 20, 30, 40, 50, 55, 60];
xticklabels = {'1y', '10y', '20y', '30y', '40y', '50y', '55y', '60y'};

set(gca, 'XTick', xtick);
set(gca, 'XTickLabel', xticklabels);

dates如果没有关于数组包含什么的信息,很难回答 Q2 ,但你可以做同样的事情:

ytick = 1:6:60; % or whatever is appropriate according to the scale you are using
yticklabels = {'Jan 2005', 'Jun 2005', 'Jan 2006', 'Jun 2006', ...etc };

set(gca, 'YTick', ytick);
set(gca, 'YTickLabel', yticklabels);

当然,您也可以从刻度值自动生成字符串 - 如果您需要帮助,只需请求帮助即可。

于 2012-10-11T04:00:19.887 回答