保存的 EPS 图像与绘制的图表不同
Posted
技术标签:
【中文标题】保存的 EPS 图像与绘制的图表不同【英文标题】:Saved EPS image different than plotted chart 【发布时间】:2010-02-17 12:29:46 【问题描述】:我正在 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 文件与显示的图表并不完全相同。
我做错了什么?
【问题讨论】:
ylim 是内置函数的名称。我不建议将其用作变量名。例如,您还可以使用 ylim([0 1]) 设置轴限制。 你对其他格式有同样的问题吗?哪个操作系统,Matlab 版本? 否,其他格式(例如 PNG)可以正确生成。我在win xp下使用Matlab 6.5 (R13)。 【参考方案1】:我只是复制/粘贴了您的代码,其中s
和n
定义为rand(2048,1)
,我没有发现保存的EPS 文件有任何问题;正如预期的那样,y 范围都是 [0,2]...
首先确保仔细检查您的实际代码,然后也许您可以尝试将PaperPositionMode 属性设置为auto
:
set(gcf, 'PaperPositionMode', 'auto')
启用所见即所得的图形打印。
PS:您的数字似乎使用像素位置,这与指定的“标准化”单位相矛盾,但这与您的问题无关。
【讨论】:
您的解决方案(设置纸张位置模式)似乎解决了一个问题,但又产生了另一个问题。我正在为论文生成图像,并且我使用了非常大的字体大小(28)。使用您的解决方案后,限制似乎设置正确,但现在 Y 轴的文本标签(刻度)被剪裁了。 我只能要求你发布你正在使用的实际代码,因为上面的 sn-ps 对我来说是正确的,无论是否有 PaperPositionMode 选项(我在 WinXP 上使用 R2009b) 不需要。我手动强制轴的位置,现在似乎一切正常。感谢您的帮助。以上是关于保存的 EPS 图像与绘制的图表不同的主要内容,如果未能解决你的问题,请参考以下文章
厉害了,用Python绘制动态可视化图表,并保存成gif格式