使用以下变量:
SP
:包含随机数的已知8x1行向量。YP
:包含随机数的已知8x1行向量。我有八个数据点。对于x轴上的每8个数据点,我有以下标签:
Asset1 - Asset2 - Asset3 - Asset4 - Asset5 - Asset6 - Asset7 - Asset8
问题:当我实现我的代码时,我得到了无数的上述标签。
这是我在MatLab的输出:
这是我的代码:
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%%'));
答案 0 :(得分:2)
您需要cell array of character arrays使用'XTickLabel'
而不是character array:
labelCell = {'Asset1' 'Asset2' 'Asset3' 'Asset4' 'Asset5' 'Asset6' 'Asset7' 'Asset8'};
set(gca, 'xTickLabel', labelCell);
当你像你一样传递一个字符数组时,MATLAB只会回收每个tick标签的全部内容。如果您仍想旋转标签,则必须将单元格数组传递给xticklabel_rotate
。但是,较新版本的MATLAB允许您通过修改'XTickLabelRotation'
属性来执行此操作:
set(gca, 'XTickLabelRotation', 45); % Rotate by 45 degrees