(更新:另请参阅桑乔的精彩回答:从 Octave 导出的图中具有透明背景 )
一般来说,添加八度透明度仍然不完全支持。我的建议是像平常一样生成图像,并使用外部工具来添加透明度(您可以通过八度音程内调用)system
函数,如果您希望它成为脚本的一部分)。
imagemagick 套件可以通过转换命令执行您想要的操作,例如
convert myplot.png -fuzz 50% -transparent white myplot_transparent.png
(取自here)
如果您想生成许多“图层”,其中一些具有透明度,然后叠加它们(这可能是您首先想要的透明度),您也可以通过 imagemagick 执行此操作:
convert bottomlayer.png toplayer.png -compose over -composite out.png
因此,八度音阶的完整示例可能如下所示:
t = [0:0.01:2*pi];
% Create bottom layer (no transparency needed)
plot (t, sin(t), 'r', 'linewidth', 3);
set(gcf, 'Position', [10, 10, 500, 500]);
axis([-1, 7, -1, 1]);
set(gca, 'Position', [0.1, 0.1, 0.8, 0.8]);
saveas(gcf, 'bottom.png');
% Create top layer, and make transparent (via imagemagick)
plot (t, cos(t), 'g', 'linewidth', 3);
set(gcf, 'Position', [10, 10, 500, 500]);
axis([-1, 7, -1, 1]);
axis off;
set(gca, 'Position', [0.1, 0.1, 0.8, 0.8]);
saveas(gcf, 'top.png');
system('convert top.png -fuzz 10% -transparent white top.png');
% Combine layers
system('convert bottom.png top.png -compose over -composite result.png');
%Visualise result in octave
imshow result.png
结果图像: