我在matlab中创建了一些图,然后将其保存为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 :(得分:2)
我只是将s
和n
定义为rand(2048,1)
复制/粘贴您的代码,我发现保存的EPS文件没有任何问题;正如预期的那样,y范围是[0,2] ......
首先请务必仔细检查您的实际代码,然后您可以尝试将PaperPositionMode属性设置为auto
:
set(gcf, 'PaperPositionMode', 'auto')
启用WYSIWYG打印数字。
PS:您的数字似乎正在使用像素位置,这与指定的“标准化”单位相矛盾,但这与您的问题无关。