Matlab中保留全部X轴刻度标记仅显示每第十个刻度标签的方法
解决Matlab中保留全部刻度标记但仅显示每隔10个刻度标签的问题
嘿,我懂你遇到的这个麻烦——想要留住所有刻度线(每个数值对应的标记),但只显示每第十个刻度的标签,之前的尝试没达到预期对吧?问题其实出在标签和刻度的对应逻辑上,下面给你两种好用的解决办法:
方法一:手动构建标签数组
核心思路是给每个刻度标记分配一个标签,大部分标签设为空字符串,只在你需要显示的位置(0、10、20...)填入对应数值:
% 第一步:设置所有需要显示的刻度标记(0到100,步长1) set(gca, 'XTick', 0:1:100); % 第二步:创建和刻度数量一致的空标签数组 xtick_labels = repmat({''}, 1, length(get(gca, 'XTick'))); % 第三步:给每隔10个的刻度位置设置标签(索引1、11、21...对应0、10、20...) xtick_labels(1:10:end) = cellstr(num2str((0:10:100)','%d')); % 第四步:将标签应用到坐标轴 set(gca, 'XTickLabel', xtick_labels);
方法二:用数组函数自动生成标签
这种方式更简洁,通过判断刻度是否为10的倍数来决定是否显示标签:
% 定义所有刻度值 xTicks = 0:1:100; set(gca, 'XTick', xTicks); % 生成标签:仅当刻度是10的倍数时显示数值,否则为空字符串 xtickLabels = arrayfun(@(x) mod(x,10)==0 ? num2str(x) : '', xTicks, 'UniformOutput', false); % 应用标签 set(gca, 'XTickLabel', xtickLabels);
为什么之前的方法无效?
你之前直接设置XTicklabel为[0 10 20 ... 100]时,Matlab会自动把这个短数组循环填充到和XTick的长度一致,导致每个刻度都被标上了重复的数值,自然拥挤到无法读取。而上面的方法让每个刻度对应唯一标签,空标签不会显示,刚好满足你的需求。
内容的提问来源于stack exchange,提问作者Johannes Maximilian
相关产品推荐
相关产品推荐

