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。
x
勾选为1y
然后10y20y...50y
这样第一步的大小为9y
,然后10y
为所有剩余的分数,分开从2
和55y
的最后60y
开始,5y
应该间隔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);
,我该如何处理这种不规则的间距? 确实做到了,似乎是一种稍微狡猾的方式,但它完成了
{{1}}
ClosestDate是我的函数,它在dates2中找到第一个日期,这比keydates2中的每个日期都要多。
答案 0 :(得分:0)
对于Q1,只需按照您的描述完全设置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);
当然你也可以从刻度值自动生成字符串 - 如果你需要帮助就可以这样做。只需要它就可以了。