使用 patch 绘制简单矩形时如何显示坐标轴轮廓?

how to display the axes outline when using patch to draw a simple rectangle?

我正在尝试使用 patch 函数在 matlab 中绘制一个简单的矩形。问题是,一旦我使用 patch 函数,轮廓框就会消失(它似乎忽略了图中的当前轴)。这是我使用的简单代码:

figure
set(gca,'visible','on')
axis([0,20e9,0.25,1.1])
patch([7e9 7e9 10e9 10e9],[.55 .35 .35 .55],'c','FaceAlpha',0.2,'linestyle','--','edgecolor','b','EdgeAlpha',.2,'linewidth',2);
box on

先谢谢了,我用的是2013版的matlab。

所以问题是,由于您的补丁具有透明度,MATLAB 必须将图形的渲染器从默认渲染器更改为 OpenGL(支持透明度)。因此,图形的某些特征(在您的情况下是轴上的边界框)可能会有所不同。

如果您将渲染器改回 'painters',您会看到该框恢复到您期望的方式,但您失去了透明度。

set(gcf, 'Renderer', 'painters')

不幸的是,真的没有好的解决办法。您可以考虑将您的面部颜色更改为 appear 透明但不是真的,然后 MATLAB 可以使用默认渲染器。您也可以尝试增加坐标轴

LineWidth
set(gca, 'LineWidth', 2)