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”的绘图选项失败的主要内容,如果未能解决你的问题,请参考以下文章