R生成的pdf图中的UTF字符损坏

roejwanj  于 8个月前  发布在  其他
关注(0)|答案(4)|浏览(31)

我试图保存情节与传说包含UTF字符的男性和女性的pdf在R。打印到图形设备时:

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

剧情的传说看起来和预期的一样

我甚至可以通过右键单击和“保存为pdf”将其保存为pdf。但是,当我使用内置函数pdf

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

它会丢弃一个警告并显示损坏的字符:

cairo_pdf不会丢弃警告,但也不会显示正确的符号:

根据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 Sierra 10.12.1的计算机上重现了相同的行为。

7cwmlq89

7cwmlq891#

OS X上,一个可行的答案是使用quartz

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

来源:https://stackoverflow.com/a/19610909/2962344
cairo_pdf似乎在Linux上可以工作。

tcbh2hod

tcbh2hod2#

这是为我工作(在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上试试这个

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

Plotting symbols fails in PDF

ubof19bj

ubof19bj3#

我也遇到了同样的问题,其他的解决方案对我不起作用,最后我用png代替了pdf:

png('test.png', units="in", width=11, height=10, res = 600)
plot(1)
legend('topright', bty = 'n',
       expression(italic("legend"~"\u2640"~"\u2642")))
dev.off()
rsl1atfo

rsl1atfo4#

它可以在Linux上运行,带有ggsave和expression(mu)的pdf
draw_label(expression(paste(“50“,mu,“m”)
ggsave(...)

相关问题