2012-05-03 3 views
5

Rでは、プロットをPDFまたはPostscriptファイルに保存すると、軸ラベルのハイフンがマイナス記号に変わります。明らかに、これは設計によるものです。 "postscript"デバイスのドキュメントによると:PDF/Poscriptの出力で「マイナスハック」を無効にする方法はありますか?

[通常のエンコーディングルールには例外があります。他の エンコーディングのハイフンでも、文字45( '" - "')は常にマイナス (Adobe ISOLatin1の値)として設定されます。ハイフンはすべてのキリル文字とギリシャ語のエンコードで、文字173(8進数0255)として使用できます。 (これは、UTF-8ロケールで 「『\ UAD』」と入力することができます。)

この機能をオフにする方法はありますか?

問題は、さまざまな形式のプロットを保存することが多いということです。提案された「\ uad」回避策を実行すると、Postscript/PDF出力で期待されるハイフンが得られますが、 PNGのようなグラフィックスデバイス。 PDFとPNGの2つのバージョンを作成する必要はありません。

"マイナスハック"を無効にすることができれば、グラフィックスデバイス間のレンダリングの動作が一貫していて、複数のデバイスに異なるフォーマットで簡単にプロットを印刷することができます。例えば、私は、次の操作を実行できるようにしたい、とハイフンはPDFとプロットのPNGバージョンの両方で一貫してレンダリングする必要があるだろう:あなたの助けを

p <- qplot(arrival_rate, mean_service_time, data = response_times, ...) 
ggsave(p, file = "/tmp/service-scaling.pdf", useDingbats = F) 
ggsave(p, file = "/tmp/service-scaling.png") 

ありがとう!

答えて

7

お使いのマシンでサポートされている場合は、を代わりに使用してを使用してもかまいません(capabilities()と入力してください)。私もそれを含める可能性があるため、ここで

enter image description here enter image description here

、私は上記の二つのpdfファイルのために使用されるコードである:他のプロットのデバイスのような"-"以上を扱うように思わ

cairo_pdf("cairo_pdf.pdf", width=6, height=3.5) 
    par(mar=c(10,4,4,1)) 
    plot(1:10, type = "n", axes = FALSE, 
     main = "Plotted using cairo_pdf()", 
     ylab = "", xlab = "x-y", cex.lab = 10) 
dev.off() 

pdf("pdf.pdf", width=6, height=3.5) 
    par(mar=c(10,4,4,1)) 
    plot(1:10, type = "n", axes = FALSE, 
     main = "Plotted using pdf()", 
     ylab = "", xlab = "x-y", cex.lab = 10) 
dev.off() 
+1

それは私のために働く!次は、私が望むものを正確に生成します: 'ggsave(file =" /tmp/service-scaling.pdf "、p、cairo_pdf)' –

0

hereを説明するpdf()の回避策があります。 " - "ハイフンをユニコード文字"\255"またはUTF8 "\uad"に置き換えてください。 これはRコンソールでうまく印刷されないかもしれませんが、pdfにあります。 簡単にgsub("-", "\uad", "x-y)を使用して置換することができます。

enter image description here

pdf("pdf.pdf", width=5, height=4) 
par(mar=c(6,2,2,2), mfrow=c(2,1)) 
plot(1:10, type = "n", axes = FALSE, 
    main = "Default", 
    ylab = "", xlab = "x-y", cex.lab = 8) 
plot(1:10, type = "n", axes = FALSE, 
    main = "with '\\uad'", 
    ylab = "", xlab = gsub("-", "\uad", "x-y"), cex.lab = 8) 
dev.off() 

私はcairo_pdfでは不可能であるCMYKのカラーモードでPDF、(以降、変換の選択肢をエクスポートしたいので、私はこのソリューションを使用して終了しましたCMYKに変換すると、小さなファイルの場合はファイルサイズが10倍になります)。私は誰かがそれを使うことができることを願っています。

関連する問題