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

如何在MATLAB绘图中设置Y轴网格间隔为5?

MATLAB设置Y轴每5单位显示网格的解决方法

你的问题出在变量名重复覆盖:你先把y轴的最大值存在Max里,之后又把x轴的最大值赋值给了同一个Max变量,导致后续用yticks(0:5:Max+10)时,Max其实是x轴的最大值,不是y轴的,自然不会生效。

修复步骤:

  • 把存储y轴最大值的变量改成YMax,避免和x轴的变量冲突
  • 在设置ylim之后,添加正确的yticks设置
  • 确保网格跟随主刻度显示

修改后的完整代码:

function DisplayNumber(x,y1,y2,Name,Method)
plot(x,y1,'-s','MarkerSize',9,...
    'MarkerEdgeColor','green',...
    'MarkerFaceColor',[0 0.4470 0.7410])
hold on 
% 注意:此处原legend会被后续调用覆盖,建议按需保留
% legend({'cos(x)','cos(2x)','cos(3x)','cos(4x)'},...
%     'Location','northwest','NumColumns',2)
p=plot(x,y2,'-s','MarkerSize',9,...
    'MarkerEdgeColor','yellow',...
    'MarkerFaceColor',[0.6350 0.0780 0.1840])
hold off 
xtickangle(0)

% 单独存储y轴最大值,避免被x轴变量覆盖
YMax = max( max(y1), max(y2) );
ylim([0 YMax+10]);
% 设置Y轴每5个单位一个刻度,网格会自动对齐这些刻度
yticks(0:5:YMax+10);

% 单独存储x轴最大值
XMax = max(x);
xlim([1 XMax+1]);
xticks(0 : 20)

legend( strcat(Method,"-AHP"),strcat(Method,"-MOWOA-NIS"));
ylabel('Rank reversal ratio %');
xlabel('Number of networks');

grid on
% 若需要次网格,可添加此行,不影响主网格显示
% grid minor

set(gcf,'Units','Inches');
pos = get(gcf,'Position');
set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
print(gcf,Name,'-dpdf','-r0')
end

额外说明:

  1. 代码里有两次legend调用,第一次的内容会被第二次完全覆盖,建议根据需求保留一个,避免逻辑混乱。
  2. grid on默认会跟随主刻度显示网格,只要yticks设置正确,网格就会自动在每5个单位的位置显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:18:27