matlab - 在 MATLAB R2015b 中设置 colorbar 的 alpha

标签 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

最佳答案

使用 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

执行此操作时必须小心,因为颜色栏会不断刷新,并且这些更改不会保留。为了让它们在我打印图形时留下来,我只是将 FaceColorBinding 模式更改为 interpolated

之外的模式
c.Face.ColorBinding = 'discrete';

这意味着它不会在您更改颜色限制或颜色图时更新。如果您想更改其中任何一项,您需要将 ColorBinding 重置为 intepolated,然后再次运行上述代码。

c.Face.ColorBinding = 'interpolated';

例如,以下内容将为两个颜色图保存一个带有透明颜色条的图像:

c = colorbar();

drawnow;

alphaVal = 0.1;

% 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;

drawnow

% Make sure that the renderer doesn't revert your changes
c.Face.ColorBinding = 'discrete';

% Print your figure
print(gcf, 'Parula.png', '-dpng', '-r300');

% Now change the ColorBinding back
c.Face.ColorBinding = 'interpolated';

% Update the colormap to something new
colormap(jet);

drawnow

% Set the alpha values again
cdata = c.Face.Texture.CData;
cdata(end,:) = uint8(alphaVal * cdata(end,:));
c.Face.Texture.CData = cdata;

drawnow

% Make sure that the renderer doesn't revert your changes
c.Face.ColorBinding = 'discrete';

print(gcf, 'Ugly_colormap.png', '-dpng', '-r300');

关于matlab - 在 MATLAB R2015b 中设置 colorbar 的 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423603/

相关文章:

matlab - 如何在MATLAB中为随机数生成器设置统一种子?

ffmpeg - 将背景转换为黑色?

python - 两个子图上的两个颜色条,相同的图形

python - 具有归一化混淆矩阵的 Matplotlib 图的颜色条不会更新值

matlab - 关联大矩阵

.net - EPPlus 计算方法在 Matlab 中不可见或不可访问

arrays - 如何防止在matlab中创建结构体数组?

Android - 多次使用图像资源但仅在 1 个实例上更改 alpha

css - 将 alpha channel 添加到在 css 变量上声明的十六进制颜色

python - 分别保存散点图的颜色条