2017-06-14 58 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()'函数。 –