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

如何在MATLAB中压缩X轴指定区域优化数值方法对比图

解决MATLAB绘图中X轴远点压缩重要区域的问题

针对你遇到的X轴存在超大数值点导致小数值区域被挤压的问题,最直接有效的方案是将X轴设置为对数刻度,这样可以自动压缩大数值区间的显示占比,同时拉伸小数值区间,让重要数据点清晰展示。

方案1:使用loglog函数替换semilogy

loglog会同时将X轴和Y轴设置为对数刻度,完美适配你的数据分布(X值呈倍数增长,Y值为误差项也适合对数展示):

x1=[12*4 24*8 48*16 96*32 192*64];
x2=[12*4 19*6 21*7 24*8 28*9];
x3=[18*6 24*8 33*11 39*13 45*15 51*17];
x4=[18*6 24*8 33*11 39*13 45*15 51*17];

U1=[7.4207e-02 1.3801e-02 5.5384e-03 1.5280e-03 3.9070e-04];
U2=[4.6278e-01 5.1786e-02 2.8978e-02 1.0437e-02 1.5375e-03];
U3=[3.7161e-01 1.2637e-01 1.6715e-02 4.5160e-03 1.3843e-03 6.0238e-04];
U4=[4.0301e-01 1.3381e-01 1.7245e-02 4.7084e-03 1.4937e-03 6.4130e-04];

% 替换semilogy为loglog,保留原有样式参数
loglog(x1,U1,'mo-', 'MarkerFaceColor','b', 'MarkerEdgeColor','c','LineWidth',2);
hold on
loglog(x2,U2,'bd-', 'MarkerFaceColor','b', 'MarkerEdgeColor','g','LineWidth',2);
loglog(x3,U3,'ks-', 'MarkerFaceColor','b', 'MarkerEdgeColor','r','LineWidth',2);
loglog(x4,U4,'^-', 'MarkerFaceColor','r', 'MarkerEdgeColor','y','LineWidth',2);

xlabel('N','fontsize',20)
ylabel('L_{\infty}','fontsize',20) 
legend('HWCM','MQ-MCM', 'IMQ-MCM','HIMQ-MCM');
hold off % 避免后续绘图冲突

方案2:保留semilogy,手动设置X轴为对数刻度

若希望保持Y轴半对数样式,仅修改X轴,可在原代码末尾添加以下设置:

% 原绘图代码不变,添加X轴对数刻度设置
set(gca, 'XScale', 'log');
% 可选:自定义X轴刻度,让小数值区域刻度更密集
set(gca, 'XTick', [48, 100, 200, 500, 1000, 5000, 12000]);
set(gca, 'XTickLabel', {'48','100','200','500','1000','5000','12288'});

原理说明

对数刻度的核心是将数值的比例关系转换为轴上的线性距离:

  • 小数值区间(如48到867)的比例跨度大,在对数轴上会被拉伸,数据点间距变大,便于观察;
  • 大数值点(12288)与前一个点(3072)的比例跨度小,在对数轴上的显示间距会被压缩,不会占据过多绘图区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:42:08