我尝试使用拟合线和预测器边界绘制测量数据进行比较,并使用Matlab 2011b和Win7 / 64位。
为此,我适合函数FitSt
,并获取feval
和predint
函数的拟合数据。
当我尝试使用patch
函数绘制预测变量边界并将FaceAlpha
属性设置为除1之外的任何值时,会出现问题 - y轴消失。当绘图平移时,x轴也会消失,但有时会重新出现。删除patch
对象或将FaceAlpha
设置为1时,轴会重新出现。刻度标记保持不变。
将此图导出(使用export_fig
)到pdf
时,轴可见但patch
不透明(我认为pdf
不支持不透明度)。导出到png
时,结果是没有轴但具有不透明度 - 与matlab图完全相同。
假设我们在向量Xm
,Ym
,Xf
和Yf
以及2列广告Xp
和Yp
中有数据。第二个被分类表示测量,拟合和预测器边界。然后,不那么简单的工作示例是:
%% Plot measurement data / Optional
line('xdata',Xm,'ydata',Ym,'color','b','linestyle','none','marker','.')
%% Plot fit line / Optional
line('xdata',Xf,'ydata',Yf','color','b')
%% Plot predictor bound patch / Mandatory
pp=patch(Xp(:),Yp(:),zeros(length(Xp(:)),1),'facecolor','b','linestyle','none')
%% Plot predictor bound edges / Mandatory
Xp=[Xp;nan(1,2)];Yp=[Yp;nan(1,2)];
line('xdata',Xp(:),'ydata',Yp(:),'color','b')
%% Screw axes
set(pp,'FaceAlpha',0.125)
%% Unscrew axes
set(pp,'FaceAlpha',1)
终极MWE:
fill([0;0;1;1],[0;1;1;0],[0;0;0;0],'facealpha',.5)
set(gca,'xlim',[-0.02 1.02],'ylim',[-0.02 1.02])
导致这种奇怪行为的原因是什么?如何避免这种行为?
修改
讨论了同样的问题here,问题是由OpenGL渲染器引起的。
当我"拧开"轴,te渲染器自动从opengl
切换到painters
。当我运行set(gcf,'renderer','opengl')
时,我拧紧了未拧紧的轴。如果我运行set(gcf,'renderer','painters')
我拧下拧紧的轴但失去了不透明度。