在Matlab中:如何在每6个xTicks上保留所有xTicks而不是xTicklabels?

Sar*_*rah 5 matlab plot axis-labels

我已经创建了一个包含Excel文件数据的图表.我需要保留所有的xticks,但xticklabels只出现在每6个刻度上.我试过这样做:

tickStep=6;
Sheet=2;
filename='MyData.xlsx';
[~,xAxis]=xlsread(filename,Sheet,'A2:A60'); 
yAxis=xlsread(filename,Sheet,'B2:B60'); 
plot(1:numel(xAxis),yAxis) 
set(gca,'xtick',1:numel(xAxis)) 
set(gca,'xticklabel',xAxis(1:tickStep:numel(xAxis)))
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,因为所有的xticks都被绘制了,但xticklabels出现在每个xtick上,而不是像我试图实现的那样每6个出现一次.我花了很长时间考虑解决方案:-(.我需要帮助.谢谢.

编辑:我已经包含了一个图片,以帮助回答以下问题: 在此输入图像描述

关于这篇文章,xticks是否有可能每4个xticks出现而不是保留所有这些,同时每6个xtick绘制xticklabels?,不确定这一点.

gno*_*ice 5

您仍然需要为没有标签的刻度输入空字符串(或空单元格).您可以通过用以下三行替换最后一行来完成此操作:

xTickLabels = cell(1,numel(xAxis));  % Empty cell array the same length as xAxis
xTickLabels(1:tickStep:numel(xAxis)) = xAxis(1:tickStep:numel(xAxis));
                                     % Fills in only the values you want
set(gca,'XTickLabel',xTickLabels);   % Update the tick labels
Run Code Online (Sandbox Code Playgroud)

编辑以回答以下问题......

标签看起来偏离刻度的原因是因为字母的底部似乎与刻度线对齐.我猜你想让文字对齐,使每个字母的中心与刻度线对齐.使用标准MATLAB轴无法做到这一点,但MathWorks文件交换中有一些提交将刻度标签转换为文本对象,因此为您提供了更多自定义文本属性的选项:

将标签转换为文本对象后,可以分别通过修改'Rotation''VerticalAlignment'属性来调整旋转或垂直对齐.