在MATLAB R2015b中设置colorbar的alpha

时间:2016-05-24 20:49:24

标签: matlab alpha colorbar

我想在我的情节中设置一些透明度,我可以使用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。

enter image description here

2 个答案:

答案 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;

enter image description here

您必须小心这样做,因为颜色栏会不断刷新,并且这些更改不会粘连。为了让我们在打印图片时留下来,我只是将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;