Matlab:保存到 eps 和 jpg 时,带有“set”的绘图选项失败

Posted

技术标签:

【中文标题】Matlab:保存到 eps 和 jpg 时,带有“set”的绘图选项失败【英文标题】:Matlab : Plot options with "set" fail when saving to eps and jpg 【发布时间】:2016-07-05 08:57:40 【问题描述】:

我正在使用脚本来获得自动数据处理(多项式插值、正切...),但是当我使用函数集在保存之前更改我的绘图选项时,我并不总是得到正确的结果:只有字体选项(见代码)似乎有效,而图像非常小,背景颜色没有改变。

我想要的是 eps 和 jpg 文件都带有我使用的绘图选项。写这个脚本,我一直在添加/移动情节选项,我真的不明白为什么有时候情节上会出现一些选项,但在保存时似乎被忽略了。

这是我的代码中包含所有绘图选项的部分,我添加了这三个第一行而不是我的所有处理。

t=linspace(0,10,10);
front=rand(1,10);
fit=front+rand(1,10)/2;
degre=1;

plot(t,fit,'-b','LineWidth',2);
hold on
grid on
plot(t,front,'.r','LineWidth',2);
hold off
l=legend(['Interpolation polynomiale de degre ',num2str(degre)],'Resultats experimentaux');
set(l,'Color',[0.8 0.8 0.8])
set(gca,'FontSize',12,'FontWeight','bold','Color',[0.8 0.8 0.8]);
set(gcf, 'Units', 'pixels', 'Position', [0, 0, 1200, 1000])
xlabel('\fontsize14Temps de maintien (en s)')
ylabel('\fontsize14Distance parcourue (en mm)');
str='essai';
title(str)

filename='essai1';
saveas(gcf,filename,'jpg')
saveas(gcf,filename,'epsc2')

为了解决分辨率问题,我尝试使用set(0, 'DefaultFigurePosition', [0 0 1200 1000]);更改默认分辨率,但这行代码并没有改变任何东西

提前谢谢你

【问题讨论】:

【参考方案1】:

除非您将 InvertHardcopy 设置为关闭,否则保存的图像的背景将是白色的,并且大小尝试“PaperPositionMode”

set(gcf,'InvertHardcopy','off');
set(gcf,'PaperPositionMode','auto');
set(gcf,'Position', [0, 0, 2400, 2000]); %the resoultion you want

【讨论】:

谢谢,第一行帮助改变了背景,但第二行似乎并没有改变我遇到的大小问题,无论是 eps 还是 jpg。 如果你使用'PaperPositionMode'='auto',它将采用windwo分辨率并保存它,这样你就可以采用'Position'命令或手动调整它的大小,它将像这样保存 现在我正在使用 matlab 在线,所以我不知道'PaperPositionMode'='auto 会采用什么屏幕分辨率。第三行似乎不起作用,但我可能已经预料到了,因为我的代码中有类似的东西set(gcf, 'Units', 'pixels', 'Position', [0, 0, 1200, 1000])【参考方案2】:

我设法解决了我的示例脚本上的这两个问题,使用

hFig = figure(1); set(hFig, 'Position', [0 0 1200 1000])

在“情节”之前,并且

l=legend(['Interpolation polynomiale de degre ',num2str(degre)],'Resultats experimentaux'); set(l,'Color',[0.8 0.8 0.8]) set(gca,'FontSize',12,'FontWeight','bold','Color',[0.8 0.8 0.8]); set(gcf,'InvertHardcopy','off');

在绘图和绘图选项之间。

但是,这不适用于我的主要代码,我正在尝试对我的大部分非重要情节选项进行评论,看看会发生什么。 如果有人可以让我更好地了解这些选项的工作原理,那就太好了,我主要通过试错法进行编码,但这不是最有效的方法。

编辑我解决了我的问题,我在同一个图上有 4 个图,我只写了 hold all 而不是 hold on 查看 Matlab 帮助,这应该不起作用,但确实有效。

hold all 和hold on 一样。 注意:此语法将在未来版本中删除。请改用等待。

如果有人解释它为什么起作用,我想了解发生了什么。 谢谢

【讨论】:

以上是关于Matlab:保存到 eps 和 jpg 时,带有“set”的绘图选项失败的主要内容,如果未能解决你的问题,请参考以下文章

保存为 eps/pdf 时 Matlab 图形内容丢失

从 Matlab P 文件中保存图形 EPS 而不显示

matlab将eps文件转换成位图

怎样将matlab绘出的图形另存为高精度jpg图片?

matlab中如何将输出的figure中的图像保存在我的文档中

用matlab生成的图片保存为EPS格式后,下次用matlab怎么打开啊,怎么看不到图形