在 MatLab 中绘制 x 轴

Posted

技术标签:

【中文标题】在 MatLab 中绘制 x 轴【英文标题】:Plotting x-axis in MatLab 【发布时间】:2017-10-09 11:22:25 【问题描述】:

使用以下变量:

SP:包含随机数的已知 8x1 行向量。 YP:包含随机数的已知 8x1 行向量。

我有八个数据点。对于 x 轴上的每 8 个数据点,我有以下标签:

资产1 - 资产2 - 资产3 - 资产4 - 资产5 - 资产6 - 资产7 - 资产8

问题:当我实现我的代码时,我得到了无数个上述标签。

这是我从 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%%'));

【问题讨论】:

【参考方案1】:

您需要为'XTickLabel' 使用cell array of character arrays,而不是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

【讨论】:

以上是关于在 MatLab 中绘制 x 轴的主要内容,如果未能解决你的问题,请参考以下文章

matlab绘制figure的x y轴特殊标签数据

matlab绘制figure的x y轴特殊标签数据

Matlab实用程序--图形应用-双y轴图形的绘制

在matlab画出三维球面并绕轴旋转一定角度

在 MATLAB 中绘制频率响应,x 轴为对数刻度

通过 plotyy 在 MATLAB 中绘制 2 个垂直轴时设置轴限制