我创建了一个包含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个出现一次。我花了很长时间考虑解决方案:-(。我需要帮助。谢谢。
编辑:我已经添加了一张图片来帮助回答以下问题:
关于这篇文章,xticks是否有可能每4个xticks出现而不是保留所有这些,同时每6个xtick绘制xticklabels?,不确定这个。
答案 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'
属性来调整旋转或垂直对齐。