2017-05-10 195 views
0

使用了以下變量:繪圖x軸在MatLab的

  • SP:含有隨機數的已知8X1行向量。
  • YP:一個已知的8x1行包含隨機數的向量。

我有八個數據點。有關x軸的每8個數據點,我有以下標籤:

Asset1 - Asset2 - Asset3 - ASSET4 - Asset5 - Asset6 - Asset7 - Asset8

問題:當我執行我的代碼,我得到無數的上述標籤。

這是從MATLAB我的輸出:

my output

這是我的代碼:

SP = rand(8,1)/100; 
YP = (rand(8,1)/100)*2; 
plot(YP,'DisplayName','YP'); 
hold on; 
plot(SP,'DisplayName','SP'); 
hold off; 
title('SP and YP monthly returns'); 
xlabel('Monthly time series'); 
MY = 'Siemens SAP Daimler Allianz DEU.Telekom Adidas BMW DEU.Bank'; 
set(gca, 'xTickLabels', 'Asset1 Asset2 Asset3 Asset4 Asset5 Asset6 Asset7 Asset8'); 
xticklabel_rotate('Asset1 Asset2 Asset3 Asset4 Asset5 Asset6 Asset7 Asset8'); 
ylabel('Percentage of prices discounts'); 
set(gca, 'yTickLabels', num2str(100.*get(gca,'yTick')','%g%%')); 

回答

2

你需要使用一個cell array of character arrays'XTickLabel',不是character array

labelCell = {'Asset1' 'Asset2' 'Asset3' 'Asset4' 'Asset5' 'Asset6' 'Asset7' 'Asset8'}; 
set(gca, 'xTickLabel', labelCell); 

當你通過一個像你一樣的字符數組時,MATLAB只是爲每個刻度標籤回收整個東西。如果您仍想旋轉標籤,則必須將單元數組傳遞給xticklabel_rotate。然而,更新版本的MATLAB允許您通過修改'XTickLabelRotation'屬性來完成此操作:

set(gca, 'XTickLabelRotation', 45); % Rotate by 45 degrees