You need to enable JavaScript to run this app. 使用第三方axes0函数时如何让MATLAB图形网格正常显示?
优惠活动
大模型
产品
解决方案
定价
更多

使用第三方axes0函数时如何让MATLAB图形网格正常显示?

网格不显示的原因

axes0的实现逻辑是:隐藏MATLAB原生坐标轴的默认边框、刻度,单独新建图层绘制你指定位置的轴线、标签,以此实现任意位置的坐标原点效果。
你原有代码的操作刚好踩了两个坑,直接导致网格失效:

  • 调用顺序反了:先开grid on再跑axes0,而axes0执行时会自动把原生坐标轴的网格属性重置为关闭。
  • 句柄没存:调用完axes0之后,当前活动坐标轴(gca)会被切到新建的自定义图层上,这时候直接开网格,作用的对象根本不是承载你画的曲线的那个原生坐标轴。
正确设置步骤
  1. 等所有绘图、标签、axis equal这类基础设置做完,先把原生坐标轴的句柄存下来,避免后面句柄切换找不到对象。
  2. 先跑axes0完成自定义坐标轴的渲染。
  3. 对着之前存好的原生坐标轴句柄开网格,同时调整图层层级,避免网格被自定义的轴线挡住。
修改后的测试代码
clear all;
clc;
% 绘制曲线
gbr1 = ezplot('x^2-y-0.2=0', [-1.5 1.5 -1.5 1.5]);
set(gbr1, 'color', 'r', 'linewidth', 2);
hold on;
gbr2 = ezplot('y^2-x-0.3=0', [-1.5 1.5 -1.5 1.5]);
set(gbr2, 'color', 'r', 'linewidth', 2);

% 基础样式设置
axis equal;
title('');
xlabel('x');
ylabel('y', 'rotation', 0);

% 关键:提前存原生坐标轴的句柄
ax_native = gca;
% 先执行自定义坐标轴设置
axes0('origin', 'topright');

% 给原生坐标轴开网格,按需调整图层层级
set(ax_native, ...
    'XGrid', 'on', ...
    'YGrid', 'on', ...
    'Layer', 'bottom'); % 想让网格浮在轴线上方就改成'top'
补充说明
  • 要改网格的颜色、虚线样式的话,直接在上面的set里加对应属性就行,比如'GridColor', [0.8 0.8 0.8], 'GridLineStyle', '--'。
  • 千万别在axes0之前开grid on,设置会直接被axes0清掉。

内容的提问来源于stack exchange,提问作者Ongky Denny Wijaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 00:06:03