You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:18:37