我想在我的情节中设置一些透明度,我可以使用alpha
。这很好但我也想调整颜色条。这是一个例子:
subplot(2,1,1)
A = imagesc(meshgrid(0:10,0:5));
alpha(A,1)
colorbar
subplot(2,1,2)
B = imagesc(meshgrid(0:10,0:5));
alpha(B,.1)
colorbar
该示例来自here。在这个页面上存在两个解决方案,但没有一个适用于Matlab R2015b。
答案 0 :(得分:4)
使用HG2图形(R2014b +),您可以获得一些未记录的底层绘图对象并改变透明度。
c = colorbar();
% Manually flush the event queue and force MATLAB to render the colorbar
% necessary on some versions
drawnow
alphaVal = 0.1;
% Get the color data of the object that correponds to the colorbar
cdata = c.Face.Texture.CData;
% Change the 4th channel (alpha channel) to 10% of it's initial value (255)
cdata(end,:) = uint8(alphaVal * cdata(end,:));
% Ensure that the display respects the alpha channel
c.Face.Texture.ColorType = 'truecoloralpha';
% Update the color data with the new transparency information
c.Face.Texture.CData = cdata;
您必须小心这样做,因为颜色栏会不断刷新,并且这些更改不会粘连。为了让我们在打印图片时留下来,我只是将ColorBinding
的{{1}}模式更改为Face
以外的其他内容
interpolated
这意味着更改颜色限制或色彩映射时不会更新。如果您想更改其中任何一项内容,您需要将c.Face.ColorBinding = 'discrete';
重置为ColorBinding
,然后再次运行上述代码。
intepolated
例如,以下内容将保存带有透明色条的图像,用于两个色标:
c.Face.ColorBinding = 'interpolated';
答案 1 :(得分:1)
但是,当我在实时编辑器 (R2020b) 中工作时,Suever 表单的解决方案有效:
set(gcf,'Visible','on')
这使得图形绘制在外部弹出窗口中。然后它确实有效,但我不知道为什么。
实时编辑器的工作示例:
figure(1);clf;
set(gcf,'Visible','on')
c = colorbar();
drawnow;
alphaVal = 0.5;
% Make the colorbar transparent
cdata = c.Face.Texture.CData;
cdata(end,:) = uint8(alphaVal * cdata(end,:));
c.Face.Texture.ColorType = 'truecoloralpha';
c.Face.Texture.CData = cdata;