在GGPLOT2 PDF输出Unicode字符(Unicode Characters in ggpl

2019-06-18 10:51发布

我如何使用标签,标题和类似的事情Unicode字符与GGPLOT2创建的PDF情节?

请看下面的例子:

library(ggplot2)
qplot(Sepal.Length, Petal.Length, data=iris, main="Aʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ")
ggsave("t.pdf")

情节的标题使用Unicode字符(小盘),其在输出显示为... 。 只有PDF地块出现的问题; 如果我更换了与最后一行ggsave("t.png")则如预期的输出。

我究竟做错了什么? 将R脚本我是UTF-8编码。 一些系统信息:

R version 2.14.1 (2011-12-22)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

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

当针对此问题的解决方案搜索,我发现了一些证据是R用来辑阵字节encodigns如UTF-8为PDF或后记输出一个单字节编码。 我也发现了建议,例如,能够得到的欧元符号的工作 ,但没有通用的解决方案。

Answer 1:

作为本建议, cairo_pdf()是你的朋友。 它也可以让你在通过该PDF内嵌非PostScript字体(即TTF / OTF) family论证(至关重要的,如果你不碰巧有包含您想使用的任何字形PostScript字体)。 例如:

library(ggplot2)
cairo_pdf("example.pdf", family="DejaVu Sans")
qplot(Sepal.Length, Petal.Length, data=iris, main="Aʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ")
dev.off()

...给出了一个PDF,看起来像这样:

又见这个问题 ; 虽然它看起来并不从标题直接相关的,有很多在那里有关获取字体做你想做的事,R.

每在评论中要求编辑 ,这里是Windows的特定代码:

library(ggplot2)
windowsFonts(myCustomWindowsFontName=windowsFont("DejaVu Sans"))
cairo_pdf("example.pdf", family="myCustomWindowsFontName")
qplot(Sepal.Length, Petal.Length, data=iris, main="Aʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ")
dev.off()

使用基本图形指令cairo_pdf()它应足以正好与定义字体族windowsFonts()命令第一,如上所示。 当然,请确保您使用的字体,你实际上有您的系统上,而实际上有你需要的所有字形。

请在下面的评论DLL文件里边反指令是什么,我不得不这样做,以获得Cairo()CairoPDF()在命令library(Cairo)在Windows上运行。 然后:

library(ggplot2)
library(Cairo)
windowsFonts(myCustomWindowsFontName=windowsFont("DejaVu Sans"))
CairoPDF("example.pdf")
par(family="myCustomWindowsFontName")
qplot(Sepal.Length, Petal.Length, data=iris, main="Aʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ")
dev.off()


文章来源: Unicode Characters in ggplot2 PDF Output