代码之家  ›  专栏  ›  技术社区  ›  Roman LuÅ¡trik

我们没有打印本地化字符

  •  6
  • Roman LuÅ¡trik  · 技术社区  · 14 年前

    \SweaveOpts{eps = FALSE, pdf = TRUE, echo = FALSE, prefix = TRUE, prefix.string = data}
    
    <<label = abundanca:barplot, fig = TRUE, include = FALSE, results = hide>>=
    barplot(abund, xlab="Vzorčne postaje", ylab="Abundanca", main="", col="slategrey", names.arg=c("HM1", "HM2", "HM3", "HM4", "HM5", "HM6", "HM7", "HM8", "HM9", "HM10"))
    @
    

    swave中的pdf设备使用本机编码(如中所述) options("encoding") ),它不能识别xlab中的本地字符()(用两点替换它们)。

    options("encoding" = "CP1250.enc")
    

    Error in file() : unsupported conversion from 'CP1250.enc' to ''
    

    有什么解决办法吗。。。?

    运行aL3xa的Rnw

    R CMD Sweave report.Rnw
    

    不起作用。

    通过Eclipse+StatET运行相同的文件

    Sweave("report.Rnw")
    

    我的 .Rnw 文件和文件 .pdf

    1 回复  |  直到 13 年前
        1
  •  3
  •   RivieraKid    13 年前

    这个并不像看上去那么简单。从技术上讲,这个问题依赖于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 .