web-dev-qa-db-ja.com

プロットをtiffに保存し、出版用に高解像度で(Rで)

記事を送信するジャーナルは次のことを求めています:

フィギュアの最高の再現品質を確保するために、高解像度ファイルをお勧めします。すべての図は、できればTIFFまたはEPS形式である必要があり、次の解像度が必要です。
グラフ:800-1200 DPI
写真:400-800 DPI
カラー(CMYKのみ):300-400 DPI(DPI = 1インチあたりのドット数)

グラフを送信しているので、tiffを使用して保存しようとしています。

私が使用しているコードは次のとおりです。

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

しかし、悲しいことに、それは非常に「かさばった」画像を生成します-そして私がpointsize = 2、エラーメッセージが表示されます。

Plot.new()のエラー:余白が大きすぎる

助言がありますか?

26
Tal Galili

短い答え:

解像度の高いラスターファイル(TIFF)が大きいほどファイルが大きくなるため、ファイルが大きくなります。

もう1つのオプションEPSは、PDFまたはPSです。これらのいずれかに保存するだけです。これはベクトル画像形式であり、受け入れられたと言われています。よりコンパクトで高品質です(フィギュアに膨大な数のポイントまたはラインが含まれている場合を除きます。)

長い答え:

彼らが求めたフォーマットの1つは、ラスターフォーマットであるTIFFです。画像内の各ピクセルを表す値として情報を保存します。画像が100 DPIで5インチの正方形の場合、500x500であり、250000ピクセルの情報を保存します。画像の解像度が高くなり、画像サイズが一定のままになると、必要な情報のポイントが上がります。200DPIでは1000x1000 1e6ピクセルの情報これは、ファイルが非常に大きい理由を説明しています。

5インチの正方形で高品質の画像を印刷するには、約300〜400 DPI(インチあたりのドット数)が必要になります。この方法では、画像を構成する個々の小さなピクセルは表示されません。解像度の場合、画像はまだ5 "x 5"ですが、画像を構成する個々の正方形ブロック(ピクセル)は非常に大きいので、それらを見ることができます。だから彼らはその解像度を求めました。ブロッキー、ジャギー、またはぼやけ。コンピューター画面上のテキスト(最近では100 DPI程度)が、紙に印刷された(通常は少なくとも300 dpi)ほど高品質ではない理由です。

彼らが求めた他のフォーマットはEPSでした。これはカプセル化されたポストスクリプトです。単一ページのファイルであるため、PSまたはpostscriptは同等です。そして、PDFも同様です。これらはすべてベクター形式であり、本質的に同じベクター形式です(ラスター形式の画像も含めることができますが、無視してみましょう)。

ベクター形式のファイルには、画像の描画方法に関する情報が保存されますが、各ピクセルに関する情報は保存されません。画像の下部から0.5 "に配置された長さ3"のx軸がある場合、ベクトルファイルはこの説明を認識します。グラフの各機能はファイルに記述されています。このため、単純な図面の場合、特定の画像品質でのラスター表現よりもはるかにコンパクトです。さらに、品質を損なうことなくサイズをスケーリングします。 5 "x 5"ではなく6 "x 6"で画像を描画するように要求するだけで、画像のコンポーネントを描画するための各命令も拡大されます。したがって、PDFまたはEPSファイルはよりコンパクトになりますが、最高品質で印刷されます。

PDFまたはPSファイルを送信します。解像度について心配する必要はありません。

18
John

すべきことの1つは、圧縮パラメーターを使用することです。

例えば:

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

[〜#〜] lzw [〜#〜] は可逆圧縮形式であるため、データを失うことはありませんが、ファイルサイズは確実に小さくなります。

28
nico

解像度(res)を上げると、プロットの有効サイズが小さくなるため、マージンエラーが飛び出します。より大きなwidthheightでより大きな図を作ってみてください(理論的には、同じ仮想サイズのプロットを作成するには、new_(width|height)=res/72*old_(width|height)である必要があります。
それでも、ロムノフが示唆したように、ImageMagickを使用することをお勧めします。品質を失うことはありません。

11
mbq

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"))
  })

私にとってそれは魅力のように機能し、ファイルは問題なく直接保存されました。

1