较早的时候我曾求助过一个帖子用pdf文件保持图片显示不了中文吗?但长久以来一直没有回复,于心不甘。 由于个人对于矢量图(放大不失真)有特别偏好,所以还是专门去研究了这一部分,目前发现有两个方法可以实现。
     一、简捷方法:直接在PDF()中设定字体,添加family="GB1"参数;
     其优点是方便快捷;缺点是字体单一,只有标准宋体。
     如果想进一步了解PDF的字体库可通过names(pdfFonts())命令查看。 
     在此,我依旧使用上一个帖子(作业3.7)的数据来演示一下:
student19<-read.table("student19.txt",header=T)
attach(student19)
pdf("char_3.7_1.pdf",family="GB1")
plot(身高,体重)
dev.off()
复制代码
    二、高级方法:调用Cairo程序包,使用CairoPDF()函数画图
library(Cairo)
CairoPDF("char_3.7_2.pdf")
plot(身高,体重,family=”STKaiti”)  #
STKaiti 表示字体为华文行楷;
dev.off()
复制代码
      当然,如果不知道中文字体要在family=参数后面接个什么好,我专门编制了一个包括有26种中文的函数FontsCF()
FontsCE<-function(x){
    FC<-c( "新细明体","细明体","标楷体","黑体","宋体","新宋体","仿宋","楷体","仿宋_GB2312","楷体_GB2312","微软正黑体","微软雅黑", 
"隶书","幼圆","华文细黑","华文楷体","华文宋体","华文中宋", "华文仿宋","方正舒体" ,"方正姚体","华文彩云","华文琥珀","华文隶书", "华文行楷","华文新魏" ) 
    FE<-c( "PMingLiU" ,"MingLiU","DFKai-SB","SimHei","SimSun" ,"NSimSun","FangSong","KaiTi",
"FangSong_GB2312","KaiTi_GB2312","Microsoft JhengHei","Microsoft YaHei","LiSu","YouYuan","STXihei","STKaiti",
"STSong","STZhongsong","STFangsong","FZShuTi","FZYaoti","STCaiyun","STHupo","STLiti","STXingkai","STXinwei")
    CFonts<-data.frame(FC,FE,stringsAsFactors=F)
    n<-which(CFonts==x)
        result<-CFonts[n,2]
        return(result)
        }
复制代码
    将FontsCE函数结合Cairo包来绘图到PDF,就很方便地调整中文字体了,例如
library(Cairo)
CairoPDF("char_3.7_2.pdf")
plot(身高,体重,family=FontsCE("华文楷体"))    #仅需在此将华文楷体改为仿宋或其他字体名称即可。
dev.off()
复制代码
    最后,列出这26种字体及其英文名:
1     新细明体           PMingLiU
2       细明体            MingLiU
3       标楷体           DFKai-SB
4         黑体             SimHei
5         宋体             SimSun
6       新宋体            NSimSun
7         仿宋           FangSong
8         楷体              KaiTi
9  仿宋_GB2312    FangSong_GB2312
10 楷体_GB2312       KaiTi_GB2312
11  微软正黑体 Microsoft JhengHei
12    微软雅黑    Microsoft YaHei
13        隶书               LiSu
14        幼圆            YouYuan
15    华文细黑            STXihei
16    华文楷体            STKaiti
17    华文宋体             STSong
18    华文中宋        STZhongsong
19    华文仿宋         STFangsong
20    方正舒体            FZShuTi
21    方正姚体            FZYaoti
22    华文彩云           STCaiyun
23    华文琥珀             STHupo
24    华文隶书             STLiti
25    华文行楷          STXingkai
26    华文新魏           STXinwei