MATLAB双y轴绘图出现额外空白、x轴范围超出实际数据最大值问题
问题根因
这个问题是MATLAB坐标轴自动缩放的默认规则导致的:默认状态下,MATLAB会将坐标轴范围对齐到规整刻度(比如整10、整5),同时添加少量留白,双y轴两次调用plot时,自动缩放逻辑会进一步触发范围扩展,才会出现数据只到50s、x轴却延伸到60s的空白问题。
解决方法
- 方法1:手动固定x轴范围
在所有绘图代码的最后添加xlim([min(t) max(t)]),直接将x轴范围锁定为你的时间序列的实际上下限,不会出现额外留白。 - 方法2:设置坐标轴自动缩放为紧凑模式
如果你不想手动指定范围,R2021a及以上版本可以在绘图结束后添加set(gca, 'XLimitMethod', 'tight'),MATLAB会自动让x轴范围贴合数据的实际边界,不需要手动计算范围。 - 补充排查:如果设置完上述内容还有问题,可以先检查时间序列
t中是否存在超出50的异常值或NaN值,这类异常值也会导致轴范围计算异常。
注意:上述轴范围设置必须放在所有
plot命令之后,避免后续绘图操作触发自动缩放覆盖你设置的属性。
修改后完整代码示例
yyaxis left plot(t,i_test*1000,'b-',t,iout*1000,'k-','LineWidth',2) ylabel('Current (mA)') yyaxis right plot(t,vin,'r-','LineWidth',2) ylabel('Voltage (V)') xlabel('Time (s)') % 以下两种设置二选一即可 xlim([min(t) max(t)]) % 或是R2021a及以上版本用紧凑模式:set(gca, 'XLimitMethod', 'tight')
问题截图

内容的提问来源于stack exchange,提问作者Thomas Tiotto
相关产品推荐
相关产品推荐

