2017-06-14 95 views
0

我試圖用包含男性和女性的UTF字符的傳說將圖保存爲R中的pdf。當我打印到圖形設備:由R生成的pdf圖中損壞的UTF字符

plot(1) 
legend('topright', bty = 'n', 
     expression(italic("legend"~"\u2640"~"\u2642"))) 

情節的傳奇看上去如預期

enter image description here

我甚至可以通過右鍵單擊它保存爲PDF和「保存爲PDF」。然而,當我使用內置的功能pdf

pdf('test.pdf') 
plot(1) 
legend('topright', bty = 'n', 
     expression(italic("legend"~"\u2640"~"\u2642"))) 
dev.off() 

降至警告,顯示亂碼,而不是:

enter image description here

cairo_pdf不下降的警告,但它並沒有任何顯示正確的符號:

enter image description here

Accordin g到this post,我應該指定支持我的符號的編碼,但是我不知道如何找出它的作用(除了默認Helvetica我試過MacRoman沒有成功)。

很明顯,R有可能生成包含這些符號的pdf(因爲我可以通過右鍵點擊)。不過,我想以自動化的方式實現這一點。

我R對話設置:

R version 3.3.1 (2016-06-21) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.11.5 (El Capitan) 

locale: 
[1] en_US.UTF-8/C/en_US.UTF-8/C/en_US.UTF-8/C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

我也設法複製另一臺計算機上的MacOS塞拉利昂10.12.1上相同的行爲。

+0

我之所以猶豫刪除這個問題,是因爲我花了4個小時才找到正確的答案,而接受的答案並不適合我。也許它會簡化對其他人的搜索,我將這個決定留給社區。 –

回答

1

你好,這是爲我工作(在Windows上)

cairo_pdf('test.pdf' , family="DejaVu Sans") 
plot(1) 
legend('topright', bty = 'n', 
    paste("legend",quote("\u2640") ,quote("\u2642") )) 
dev.off() 

Unicode Characters in ggplot2 PDF Output

在Mac嘗試OS X

pdf('test.pdf',encoding="MacRoman") 

Plotting symbols fails in PDF

+0

'cairo_pdf('test.pdf',family =「DejaVu Sans」)或'pdf('test.pdf',encoding =「MacRoman」)都不起作用。它產生與沒有編碼規範完全相同的輸出。 –

1

一個工作答案正在使用quartz

quartz(type = 'pdf', file = 'test.pdf') 

來源:https://stackoverflow.com/a/19610909/2962344

cairo_pdf似乎對Linux的工作

+0

您是否嘗試過'Cairo'庫中的'CairoPDF'?它不同於'cairo_pdf()'函數。 –