【问题标题】:Matlab print does not keep background transparencyMatlab打印不保持背景透明度
【发布时间】:2017-01-19 21:30:48
【问题描述】:

我正在 Matlab R2015b 中创建具有透明图形背景的曲面图。考虑代码

n=49; 
h=figure;
[x,y]=meshgrid(1:n,1:n);
surf(x,y,peaks(n),'EdgeColor','none')
set(h,'Color','none')
set(h, 'InvertHardCopy', 'off');
print(h,'-dpdf','peaks.pdf')

这给了我一个 pdf 文件 peaks.pdf,其中轴背景为白色,但图形背景透明。
但是,如果我设置n=1000,则背景不再是透明的,而是黑色的(如图在Matlab中显示的那样)。
有谁知道,问题是什么,以及如何防止这种情况?谢谢!

【问题讨论】:

标签: matlab matlab-figure


【解决方案1】:

关键是属性set(h, 'InvertHardCopy', 'off');

来自 MATLAB 帮助:

InvertHardcopy — 打印或保存时的图形背景颜色
'开'(默认) | '关闭'
保存或打印时的图形背景颜色, 指定为下列值之一:

'on' - 将图形背景和轴背景颜色更改为 白色的。
'off' - 使用与显示屏颜色相同的颜色。到 更改显示屏上的图形背景颜色,使用颜色 图的属性。要更改坐标区背景颜色,请使用 坐标区的颜色属性。

因此,您应该使用set(h, 'InvertHardCopy', 'on'); 来获得所需的 pdf 输出。

【讨论】:

  • InvertHardCopy 设置为on 会将背景颜色更改为白色,如您所说,但我有兴趣为该图设置透明背景。所以我实际上需要将它设置为off
  • 对不起,我错过了那部分。我认为使用print(h,'-painters','-dpdf','peaks.pdf') 设置渲染器将产生具有透明背景的输出。至少它使用n=100 在我的系统(Win7、MATLAB R2016a)上成功了。但是,使用此渲染器设置 n=1000 会非常慢。我只是在大约之后打断了脚本。 90 分钟....
猜你喜欢
  • 1970-01-01
  • 2021-07-03
  • 2011-10-24
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 2021-12-19
相关资源
最近更新 更多