Matlab 2017b修改LineWidth导致标记显示异常问题求助
解决MATLAB R2017b中设置LineWidth后圆形标记锯齿化的问题
你碰到的这个圆形标记边缘锯齿化、看起来像“墨水不足”的问题,是MATLAB R2017b(Windows 10 64位环境下)的一个已知渲染bug——当你在同一条plot命令里同时设置较大的MarkerSize和LineWidth时,标记的边缘渲染会出现异常,导致显示断裂的锯齿效果。
这里给你几个实用的解决办法:
分开绘制线条与标记
问题的核心是同一条plot命令里线条和标记的渲染逻辑冲突,把它们拆成两个独立的plot操作就能彻底解决:figure subplot(211) plot([1 2],[1 2],'o-','markersize',12) xlim([0,3]), ylim([0,3]) subplot(212) % 先绘制带宽度的线条 plot([1 2],[1 2],'-','linewidth',2) hold on % 单独绘制圆形标记,可自定义填充色和边缘色 plot([1 2],[1 2],'o','markersize',12,'MarkerFaceColor','white','MarkerEdgeColor','blue') hold off xlim([0,3]), ylim([0,3])这样标记的渲染完全独立于线条,就能恢复平滑的圆形边缘了。
切换图形渲染器
尝试修改当前figure的渲染器,比如使用opengl或zbuffer,有时候能绕过这个bug:figure('Renderer','opengl') % 之后再执行你的绘图代码 subplot(211) plot([1 2],[1 2],'o-','markersize',12) xlim([0,3]), ylim([0,3]) subplot(212) plot([1 2],[1 2],'o-','markersize',12,'linewidth',2) xlim([0,3]), ylim([0,3])注意:
opengl渲染器在部分系统上可能会有字体显示或其他小问题,需要根据你的实际情况测试。升级MATLAB版本
这个渲染bug在MATLAB R2018a及之后的版本中已经被官方修复了,如果条件允许,升级到较新的版本就能一劳永逸解决这个问题。
内容的提问来源于stack exchange,提问作者Itamar Katz
相关产品推荐
相关产品推荐

