2010-02-17 71 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