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

时间:2013-12-23 00:19:31

标签: 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)))

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

编辑:我已经添加了一张图片来帮助回答以下问题: enter image description here

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

1 个答案:

答案 0 :(得分: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

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

标签看起来偏离刻度线的原因是因为字母的底部似乎与刻度线对齐。我猜你想让文字对齐,使每个字母的中心与刻度线对齐。使用标准MATLAB轴无法做到这一点,但the MathWorks File Exchange上有一些提交将刻度标签转换为text objects,因此为您提供了更多选项来自定义text properties:< / p>

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