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

问题描述 投票:0回答:4

我正在尝试将包含男性和女性的 UTF 字符的图例保存为

R
中的 pdf 格式。当我绘制到图形设备时:

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
不会发出警告,但也不会显示正确的符号:

根据这篇文章,我应该指定支持我的符号的编码,但是我不知道如何找出它的作用(除了默认的

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

r pdf utf
4个回答
3
投票

OS X 上的一个有效答案是使用 quartz

:

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

来源:

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

cairo_pdf

 似乎可以在 
Linux 上运行。


1
投票
嗨,这对我有用(在 Windows 上)

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

ggplot2 PDF 输出中的 Unicode 字符

在 Mac 上试试这个

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

在 PDF 中绘制符号失败


1
投票
我遇到了同样的问题,其他解决方案对我不起作用,最后我使用 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()
    

0
投票
在 Linux 上

ggsave

expression(mu)
 有效

draw_label(expression(paste("50 ", mu, " m"))) ggsave(...)
    
© www.soinside.com 2019 - 2024. All rights reserved.