2017-05-04 5 views
2

私はRで美しいプロットを作って科学ジャーナルに使用しました。ジャーナルの仕様によると、フォントが埋め込まれたepsファイル形式が必要です。 Rはepsファイルを埋め込みフォントでエクスポートしないので、私は基本グラフィックスであるembedFonts()を使用して変換しています。しかし、この呼び出しは私の人物の境界ボックスを変更しています。以下の簡単な例では、空白が切り取られています。 OCDで調整されたパブリケーション品質のプロットでは、すでに余白に完全に調整されているため、空白が追加されています。embedFontsが私のRプロットのバウンディングボックスを変更しています

私はフォントを埋めたいと思っていますが、それ以外のものはそのままです!ここで

例です。

setEPS() 
postscript(file = "~/Desktop/test.eps", family = "Helvetica", colormodel = "srgb", width = 5, height = 3) 
plot(x = 1:10, y = 1:10, col = "red", main = "Keep everything the same but embed my fonts!") 
dev.off() 
embedFonts(file = "/Users/athena/Desktop/test.eps", format = "eps2write", outfile = "/Users/athena/Desktop/stupid.eps") 

は、これまで私がしている:
- 自作を使用してインストールはghostscript:$ brew install ghostscript
は - embedFontsはありませんティルダの許可
、FULLパスを必要としていることを学んだ - と形式を指定デフォルトの "ps2write"がポストスクリプトに変更されるため、 "eps2write"

オープンデータ、オープンコードで「再現性のあるリサーチ」に多大な努力を費やしました。 、オープンジャーナル、bla bla bla ...私は実際にイラストレーターの変換などを使って最終的な数字を作る必要はありません:(

+1

このRメーリングリストのスレッドは、おそらく助けになるでしょう:http://r.789695.n4.nabble.com/eps-file-with-embedded-font-td903387.html – neilfws

答えて

0

この理由は、embedFontsがGhostscriptを内部的に呼び出すためです周囲の空白の一部を切り取って「最適な」バウンディングボックスをフィッティングすることによってスマートになります。

我々はR.における当社5inx3in描画領域の周囲に目に見えないボックスを描画してちょうどあなたのコードスニペットに1行を追加することを防ぐことができます。これについて移動する

setEPS() 
postscript(file = "~/Desktop/test.eps", family = "Helvetica", colormodel = "srgb", width = 5, height = 3) 
plot(x = 1:10, y = 1:10, col = "red", main = "Keep everything the same but embed my fonts!") 
box(which="outer", col="white") 
dev.off() 
embedFonts(file = "/Users/athena/Desktop/test.eps", format = "eps2write", outfile = "/Users/athena/Desktop/stupid.eps") 

もう一つの方法は、ジョナサンの答えですここでは基本的にsedを使用して入力ファイルからバウンディングボックスの情報を読み込み、それを出力ファイルに書き込みます。http://r.789695.n4.nabble.com/eps-file-with-embedded-font-td903387.htmlは上記のコメントの@neilfwsによって指摘されています。

+0

ありがとう!私は 'box(which =" outer "、col = adjustcolor(col =" white "、alpha.f = 0)'を使い、背景も透明です! – rrr

関連する問題