同一Axes句柄下两个Plot句柄无法使用hold on问题及复现代码
解决同一坐标轴下多个绘图句柄的
hold on失效问题 在MATLAB里踩过这个坑的人都懂:当你直接指定坐标轴句柄调用plot时,单纯敲hold on经常不生效——因为hold on默认是给当前激活的坐标轴开启绘图保持状态,而如果你的目标坐标轴没被设为当前轴,这个设置根本没作用到它身上。下面是修正后的完整代码,能生成两个可在同一坐标轴共存的绘图句柄:
% 创建隐藏的黑色figure窗口 figureHandle = figure('NumberTitle','off',... 'Name','RFID Characteristics',... 'Color',[0 0 0],'Visible','off'); % 创建带浅色网格的黑色坐标轴 axesHandle = axes('Parent',figureHandle,... 'YGrid','on',... 'YColor',[0.9725 0.9725 0.9725],... 'XGrid','on',... 'XColor',[0.9725 0.9725 0.9725],... 'Color',[0 0 0]); % 关键操作:给指定的坐标轴开启hold状态,而非默认当前轴 hold(axesHandle, 'on'); % 初始化绘图数据 xData = 0; yData = 0; % 生成第一个绘图句柄(绿色点) plotHandle1 = plot(axesHandle,xData,yData,'Marker','.','LineWidth',1,'Color',[0 1 0]); % 生成第二个绘图句柄(修正了你代码里的axesH拼写错误,用红色圆圈示例) plotHandle2 = plot(axesHandle,xData,yData,'Marker','o','LineWidth',1,'Color',[1 0 0]); % 最后如果需要显示窗口的话 set(figureHandle, 'Visible', 'on');
核心注意点:
- 别再只用
hold on了,改用hold(axesHandle, 'on')直接给目标坐标轴绑定保持状态,确保后续的plot操作不会清掉之前的绘图内容。 - 每次调用
plot时明确指定坐标轴句柄,避免MATLAB自动切换当前轴导致的状态混乱。
内容的提问来源于stack exchange,提问作者Penguin Zhou
相关产品推荐
相关产品推荐

