这个并不像看上去那么简单。从技术上讲,这个问题依赖于OS/locale/pdf writer/swave(参见第7章的“R安装和管理”)。因为我运行的是GNU/Linux,所以这个“解决方案”不是针对Mac和Windows用户的。更复杂一点的是,GNU/Linux发行版有所不同,所以如果某些东西在Ubuntu上运行,就很有可能在Arch-Linux上无法运行。
我会用的
mtcars
数据集。让我们用本地化字符创建一些基本图形:
pdf("foo.pdf")
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
dev.off()
(塞尔维亚语速成班:“Potronja goriva”代表油耗,“Broj cilindara”代表气缸的#,“Dijagram rasprenja”相当于散点图)
现在,我收到一堆警告:
Warning messages:
1: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
2: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
3: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
4: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
5: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
6: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
7: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
8: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
而
options(encoding = "CP1250")
不起作用-我收到同样的警告,
pdf.options(encoding = "CP1250")
修补它,同样代表
pdf(file = "foo.pdf", encoding = "CP1250")
. 所以,我会用
options(encoding = "native.enc")
pdf.options
如前所述,把事情做好。
一些用户仅仅通过设置
pdf.options
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@
稍后,只要做:
<<plotTheFigure, echo = TRUE, fig = TRUE>>==
# I've set echo to TRUE intentionally, to prove my point here
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
@
同样的场景代表ggplot2图形。
你们中的一些人会得到正确的输出,但我没有!正如我之前所说,如果你运行的是Ubuntu,这很有可能奏效,但目前看来,我还不能让它活蹦乱跳。
Sweave file
PDF file
(在拱形机上执行)。如您所见,本地化字符在plot函数中正确显示,但在swave中会出现混乱。现在,如果我尝试将图形保存到PDF文件(不使用swaving),我会得到
correct output
.
所以,我已经解决了一些问题,但还有很多试错的工作要做。
source
output
.