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

Matlab绘图:如何使2的n次幂X轴刻度等间距显示

Matlab绘制等间距X轴刻度的2的幂次数据图

我用Matlab绘图时,X轴取值是2的整数次幂(如2、4、8...),Y轴是任意数值向量。想要让X轴刻度保持等间距,但现在的实现里X值小的地方刻度挤在一起,X越大间距越宽。

当前代码

M = [2, 4, 8, 16, 32, 64, 128, 256];
s1 = [104   136   168   200   232   264   296   328]; 

figure(1) 
semilogy(M, s1, 'ko-', 'LineWidth', 1); hold on;   %

grid; 
axis ([0 256 0 600])
xticks(M);

当前效果

当前绘制的图表

解决方案

问题出在直接用2的幂次作为X轴坐标,线性刻度下数值差距大就会导致刻度间距不均。可以通过用数据索引作为X坐标,自定义刻度标签来实现等间距显示:

修改后的代码

M = [2, 4, 8, 16, 32, 64, 128, 256];
s1 = [104   136   168   200   232   264   296   328]; 

figure(1)
% 用数据点的索引作为X轴位置,保证刻度等间距
plot(1:length(M), s1, 'ko-', 'LineWidth', 1); hold on;

grid;
% 设置X轴刻度位置为索引,标签替换为对应的2的幂次数值
xticks(1:length(M));
xticklabels(M);
% 设置Y轴范围(若需保留Y轴对数刻度,将plot替换为semilogy即可)
ylim([0 600]);
% 可选:添加轴标签
xlabel('X (2的整数次幂)');
ylabel('Y值');

说明

  • 用1:length(M)作为X坐标,让每个数据点在X轴上的位置天然等间距
  • 通过xticklabels(M)把刻度显示的文字替换成实际的2的幂次数值,兼顾视觉效果和需求
  • 如果需要保留Y轴的对数刻度,只需要把plot换成semilogy,不影响X轴的等间距设置

内容的提问来源于stack exchange,提问作者Sajjad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:15:52