6

R では、プロットを PDF または Postscript ファイルに保存すると、軸ラベルのハイフンがマイナス記号に変わります。どうやら、これは仕様によるものです。「postscript」デバイスのドキュメントによると:

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

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

私が抱えている問題は、プロットをさまざまな形式で保存することがよくあることです。提案された「\uad」回避策に従うと、Postscript/PDF 出力で予想されるハイフンが得られますが、プロットを PNG などの他のグラフィックデバイスにレンダリングすると何も得られません。 . 各プロットの 2 つのバージョン (PDF 用と PNG 用) を作成する必要はありません。

「マイナス ハック」を無効にできれば、グラフィックス デバイス間でのレンダリング動作が一貫し、プロットを複数のデバイスに単純に「印刷」して、さまざまな形式で取得できます。たとえば、次のことを実行して、ハイフンをプロットの 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")

ご協力いただきありがとうございます!

4

2 に答える 2

8

お使いのマシンがサポートしている場合 (サポートしているcapabilities()かどうかを知るために入力できる場合)、代わりに を使用できますcairo_pdf()"-"他のプロットデバイスと同様に処理するようです:

ここに画像の説明を入力 ここに画像の説明を入力

ここに、それを含めることもできるので、上記の 2 つの 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()
于 2012-05-03T23:13:20.957 に答える