2010-02-17 65 views
2

我在matlab中创建了一些图,然后将其保存为EPS图像。已保存的EPS图像不同于绘制的图表

重要的是,我创建了4张图像的集合,从第一张图像中取出'YLim'值,然后将其设置为其他3张图像。我这样做是为了强制设置中每个图像的Y轴限制。

所以对于第一个形象,我创造了一些数字,它的情节的东西,并把它的YLim属性:

f = figure('position', [50, 70, 900, 700], 'Units', 'normalized'); 
    p = plot(s+n, 'k'); 
    set(gca, 'XLim', [0, 2048]); 
    set(gca, 'XTick', 200:400:1800); 

    ylim = get(gca, 'YLim'); 

    saveas(gcf, 'some_name', 'epsc'); 

然后,接下来的3张图片,我也创建了人物,剧情什么的,设置所有需要的属性:

f = figure('position', [50, 70, 900, 700], 'Units', 'normalized'); 
    p = plot(s, 'k'); 
    set(gca, 'XLim', [0, 2048]); 
    set(gca, 'XTick', 200:400:1800); 

    set(gca, 'YLim', ylim) 

    saveas(gcf, 'some_other_name', 'epsc'); 

现在,奇怪的是。 Matlab正确显示这些图像,并且它们都具有相同的Y轴限制(例如-10:60)

但是保存的EPS文件具有不同的限制,例如,第一个具有-10:60,但第二个具有 - 20:60。换句话说,保存的EPS文件与显示的图表不完全相同。

我在做什么错?

+0

ylim是内置函数的名称。我不会推荐使用它作为变量名称。例如,您也可以使用ylim([0 1])设置轴限制。 – yuk 2010-02-17 17:03:59

+0

你有与其他格式相同的问题吗?哪个操作系统,Matlab版本? – yuk 2010-02-17 17:23:17

+0

不,其他格式(例如PNG)正确生成。 我在win xp下使用Matlab 6.5(R13)。 – Gacek 2010-02-17 17:35:03

回答

2

我只是复制/粘贴您的代码sn定义为rand(2048,1),我没有发现保存的EPS文件的任何问题;在y范围是在这两个预期[0,2] ...

首先一定要仔细检查你的实际代码,那么也许你可以尝试设置PaperPositionMode属性auto

set(gcf, 'PaperPositionMode', 'auto') 

以启用所见即所得的数字印刷。

PS:它似乎是使用像素位置为您的数字,这与指定的“规范化”单位相矛盾,但这与您的问题无关。

+0

看来你的解决方案(设置纸张位置模式)解决了一个问题,但创建了另一个问题。我为纸张生成图像,并使用非常大的字体(28)。在使用您的解决方案后,似乎可以正确设置限制,但是现在Y轴的文本标签(刻度)会被剪切。 – Gacek 2010-02-17 17:21:25

+0

我只能要求你发布你正在使用的实际代码,因为上面的代码片段对我来说工作正常,无论是否使用PaperPositionMode选项(我在WinXP上使用R2009b) – Amro 2010-02-17 17:51:04

+0

不需要。我手动强制轴的位置,现在看起来都好。谢谢你的帮助。 – Gacek 2010-02-17 17:55:20