0

我正在使用上一个问题中建议的 cairo pdf

如何在pdf上绘制汉字?

用于在 R 上生成中文文本。

library(Cairo)
mydata = matrix( c( 2:6, c( 2,4,2,6,3 ) ), nrow= 2 )
mylabs = c( "木材", "表", "笔", "垃圾桶", "杯" )
CairoPDF("Report_chinese.pdf", family="GB1")
barplot( mydata, beside=T, horiz= "T", names.arg= mylabs, las= 1, col= c( "red", "blue" ) )
dev.off()

但是条形图上没有中文文本。我该如何修复这个 pblm?

问候

4

1 回答 1

1

cairo_pdf()为我工作:

mydata = matrix( c( 2:6, c( 2,4,2,6,3 ) ), nrow= 2 )
mylabs = c( "木材", "表", "笔", "垃圾桶", "杯" )
cairo_pdf("Report_chinese.pdf")
barplot( mydata, beside=T, horiz= "T", names.arg= mylabs, las= 1, col= c( "red", "blue" ) )
dev.off()

如果要使用该Cairo库,则必须首先定义具有 CJK 字形的字体(编辑:根据评论中的请求,此示例对标签和标题使用不同的字体):

library(Cairo)
CairoFonts(regular="AR PL UKai CN:Book", bold="Century Schoolbook L:Italic")
CairoPDF("Report_chinese.pdf")
barplot( mydata, beside=T, horiz= "T", names.arg= mylabs, las= 1, col= c( "red", "blue" ) )
mtext("This is the title", side=3, line=1, font=2)
dev.off()

请注意,to 的参数CairoFonts()只是任意指针:我已经使用该bold=参数来指定斜体字体,并font=2在调用 to时使用它来访问它mtext()(请参阅 中的font参数?par)。请务必将“AR PL UKai CN:Book”和“Century Schoolbook L:Italic”替换为您系统上实际拥有的字体。

如果你不喜欢那个方法,你可以通过CairoFonts()多次调用得到相同的结果:

CairoFonts(regular="AR PL UKai CN:Book")
CairoPDF("Report_chinese.pdf")
barplot( mydata, beside=T, horiz= "T", names.arg= mylabs, las= 1, col= c( "red", "blue" ) )
CairoFonts(regular="Century Schoolbook L:Italic")
mtext("This is the title", side=3, line=1) #implicit argument: font=1
dev.off()

带有中文类别标签和整体标题不同字体的样本数据条形图

于 2012-12-08T17:11:20.127 回答