2010-08-29 81 views
25

我們發送的文章日記來是要求如下:保存陰謀TIFF,與出版(以R)高分辨率

爲確保您獲得了最佳再現質量,我們將不勝感激高分辨率文件。所有的數字應該優選爲TIFF或EPS格式...,並應具有如下決議:
圖:800 - 1200 DPI
照片:400 - 800 DPI
色(CMYK只):300 - 400 DPI(每英寸點數=每英寸點數)

由於我正在發送一個圖表,我正試圖用tiff保存它。

這裏是我使用的代碼:

tiff(filename = "c:\\aaa.tiff", 
    res = 800, pointsize = 2) 
plot(1:100) 
dev.off()  

但可悲的是,它會產生一個非常「笨重」的形象 - 如果我在那裏,不使用pointsize = 2,我會得到錯誤信息:

錯誤plot.new():數字的利潤太大

有什麼建議?

+1

如何導出爲PDF/PS,然後使用ImageMagick或其他工具轉換爲TIFF? – 2010-08-29 16:44:24

+0

我可以 - 但我可能在此期間丟失數據。另外,這裏有一些基本的東西,我錯過了 - 我想了解它(不是嗎?:)) – 2010-08-29 16:45:31

+1

將它導出到SVG,通過這樣做,您不會失去質量,導致它被矢量化。你可以用'RSvgDevice'和'Cairo'導出SVG。 – aL3xa 2010-08-29 17:18:48

回答

18

簡短的回答:

這是一個龐大的文件,因爲更高的分辨率光柵文件(TIFF),那麼大的文件

另一種選擇,EPS,像PDF或PS。只需保存其中的任何一種,這是一種矢量圖像格式,他們說可以接受,它會更緊湊,質量更高(除非你的身材包含點或線的數量巨大。)

長回答:

一個他們所要求的格式爲TIFF,光柵格式。它將信息保存爲表示圖像中每個像素的值。如果圖像是100 DPI和5「正方形,那麼這就是500x500,它可以節省250000個像素的信息,隨着圖像分辨率的提高和圖像尺寸的不變,圖像尺寸保持不變,所需要的信息點就會增加。 1e6像素的信息,這就解釋了爲什麼你的文件體積龐大。

爲了在5平方英寸的高質量打印圖像,你需要大約300-400DPI(每英寸點數)。這樣你就不會看到構成圖像的每個單獨的小像素。如果分辨率較低,那麼圖像仍然是5「x 5」,但構成圖像的每個單獨的方塊(像素)非常大,您可以看到它們。這就是爲什麼他們要求這個決議。否則,圖形中的文本和線條會顯得塊狀,鋸齒狀或模糊。這就是爲什麼計算機屏幕上的文字(這些日子只有100 DPI)幾乎不像印在紙上的高質量(通常至少300 dpi)。

他們要求的其他格式是EPS。這是封裝後記。由於它是單個頁面文件PS或postscript,因此它們是等效的。而且,PDF也相似。這些都是矢量格式,基本上是相同的矢量格式(它們也可以包含光柵格式圖像,但我們忽略它)。

矢量格式文件保存有關如何繪製圖像但不是關於每個像素的信息。如果您的圖像底部有一個x軸3英寸長的「0.5」,那麼矢量文件就知道這個描述。文件中描述了該圖的每個功能。因此,對於簡單的圖形來說,它比給定圖像質量下的任何光柵表示都要緊湊得多。此外,它可以在不損失質量的情況下擴大規模您只需要讓它以6「x 6」而不是5「x 5」的方式繪製圖像,並縮放繪製圖像組件的每個指令。因此,即使PDF或EPS文件更緊湊,它也會以最高質量打印。

發送PDF或PS文件,不用擔心分辨率。

+0

想要EPS的發佈商也會接受PDF,這是不正確的。轉換可能有時很棘手。 – mbq 2010-08-29 20:42:53

+0

我已經看到這個完全相同的請求十幾次或更多,從未失敗。不過,eps()會工作得很好。 – John 2010-08-30 01:34:00

+0

對我而言,它曾經失敗過;所以這取決於我猜測的技術編輯偏好。 – mbq 2010-08-30 09:30:35

10

當您提高分辨率(res)時,圖的有效大小會減少,因此邊距誤差會跳出。嘗試更大的圖片與更大的widthheight(理論上,要繪製一個相同的虛擬大小,它應該是new_(width|height)=res/72*old_(width|height)
儘管如romunov所示,使用ImageMagick是一個更好的主意;您不會寬鬆的質量

26

你應該做的一件事是使用壓縮參數。

例如:

tiff("outfile.tif", compression = "lzw") 

LZW是一種無損壓縮格式,這樣你就不會丟失任何數據,但你肯定會減少文件大小。

+0

如何在'pdf(文件名)'中柵格化? - - 我嘗試過'pdf(filename,compression =「lzw」)'但它不被支持。我只需要LaTeX演示文稿中的數字。我應該用tiff嗎? – 2016-11-15 20:46:13

1

我建議您使用R.devices庫中的devEval

我有這個問題我自己,解決它得益於此:

options("devEval/args/path"=file.path(Folder_of_Output)) 
    devEval("tiff", name="Name_output", width=120, height=800, { 
    barplot(data, main="imagetitle"); 
    legend("top", legend =c("text of legend")) 
    }) 

對我來說,工作就像一個魅力和文件直接保存沒有問題。