当我在使用imagesc(Matlab R2012a)创建的图像上绘制透明度<1的补丁时,我得到的东西看起来像很多"刻度标签",或者是沿着轴的图像上的数字.以下代码重现了该问题:
imagesc(rand(10,20))
hold on
patch([5 5 15 15],[3 7 7 3],'r','facealpha',.5)
Run Code Online (Sandbox Code Playgroud)
这是一个错误,还是有办法正确地做到这一点?
编辑
如果我设置set(gca,'xtick',[],'ytick',[]),数字会消失,所以它确实与刻度相关.我当然更喜欢在我的身材上打勾.

这种图形伪影通常与渲染器有关。特别是 OpenGL 渲染器似乎会搞乱 Matlab 版本、显卡和操作系统的某些组合。
标准解决方法是在图窗属性中将渲染器从 OpenGL 更改为 zBuffer,这是通过命令实现的
set(gcf,'renderer','zbuffer')
Run Code Online (Sandbox Code Playgroud)
不幸的是,OpenGL 是唯一支持透明度的渲染器,因此该解决方案不适合您。
作为一种可能的替代解决方法,您可以通过命令从硬件 OpenGL 渲染器切换到软件 OpenGL 渲染器
opengl software
Run Code Online (Sandbox Code Playgroud)
检查opengl 的帮助,了解如何在 *nix 环境中进行设置。