我试图通过Sweave在我的LaTeX文档中加入R中的一些图.
\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"))
@
Run Code Online (Sandbox Code Playgroud)
Sweave中的pdf设备使用本机编码(如设置options("encoding")
),它不识别xlab中的本地字符(ščćž)(用两个点替换它们).
我已经尝试将选项设置为在R中工作的东西:
options("encoding" = "CP1250.enc")
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
Error in file() : unsupported conversion from 'CP1250.enc' to ''
Run Code Online (Sandbox Code Playgroud)
任何解决方案,解决方法......?
编辑
运行aL3xa的Rnw通过
R CMD Sweave report.Rnw
Run Code Online (Sandbox Code Playgroud)
不起作用.
通过Eclipse + StatET运行相同的文件
Sweave("report.Rnw")
Run Code Online (Sandbox Code Playgroud)
但是,确实如此.
这件事并不像看上去那么简单。从技术上讲,此问题与操作系统/语言环境/pdf writer/Sweave 相关(请参阅“R 安装和管理”,第 7 章)。由于我运行的是 GNU/Linux,因此这个“解决方案”不适用于 Mac 和 Windows 用户。让事情变得更复杂的是,GNU/Linux 发行版有所不同,因此很有可能,如果某个东西可以在 Ubuntu 上运行,那么在 Arch Linux 上就无法运行。
\n\n我将使用mtcars
数据集。让我们创建一些带有本地化字符的基本图表:
pdf("foo.pdf")\nboxplot(mpg ~ cyl, data = mtcars, ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja")\ndev.off()\n
Run Code Online (Sandbox Code Playgroud)\n\n(塞尔维亚语速成课程:“Potro\xc5\xa1nja goriva”代表燃油消耗,“Broj cilindara”代表气缸数,“Dijagram raspr\xc5\xa1enja”相当于散点图)
\n\n现在,我收到一堆警告:
\n\nWarning messages:\n1: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Dijagram raspr\xc5\xa1enja\' in \'mbcsToSbcs\': dot substituted for <c5>\n2: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Dijagram raspr\xc5\xa1enja\' in \'mbcsToSbcs\': dot substituted for <a1>\n3: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Dijagram raspr\xc5\xa1enja\' in \'mbcsToSbcs\': dot substituted for <c5>\n4: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Dijagram raspr\xc5\xa1enja\' in \'mbcsToSbcs\': dot substituted for <a1>\n5: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Potro\xc5\xa1nja goriva\' in \'mbcsToSbcs\': dot substituted for <c5>\n6: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Potro\xc5\xa1nja goriva\' in \'mbcsToSbcs\': dot substituted for <a1>\n7: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Potro\xc5\xa1nja goriva\' in \'mbcsToSbcs\': dot substituted for <c5>\n8: In title(ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja") :\n conversion failure on \'Potro\xc5\xa1nja goriva\' in \'mbcsToSbcs\': dot substituted for <a1>\n
Run Code Online (Sandbox Code Playgroud)\n\n虽然options(encoding = "CP1250")
没有解决问题 - 我收到相同的警告,pdf.options(encoding = "CP1250")
修复它,并且相同代表pdf(file = "foo.pdf", encoding = "CP1250")
. 因此,我将使用 恢复我的旧编码options(encoding = "native.enc")
,pdf.options
按照前面所述进行设置并让事情正确。
有些用户只是通过设置pdf.options
就可以摆脱 Sweave 的困扰。因此,在开始绘图之前,您应该将这部分代码插入 .Rnw 文件中的某个位置:
<<setOptions, echo = FALSE, results = hide>>==\npdf.options(encoding = "CP1250")\n@\n
Run Code Online (Sandbox Code Playgroud)\n\n然后,只需执行以下操作:
\n\n<<plotTheFigure, echo = TRUE, fig = TRUE>>==\n# I\'ve set echo to TRUE intentionally, to prove my point here\nboxplot(mpg ~ cyl, data = mtcars, ylab = "Potro\xc5\xa1nja goriva", xlab = "Broj cilindara", main = "Dijagram raspr\xc5\xa1enja")\n@\n
Run Code Online (Sandbox Code Playgroud)\n\n同样的场景也适用于 ggplot2 图表。
\n\n你们中的一些人会得到正确的输出,但我不会!正如我之前所说,如果你运行的是 Ubuntu,那么这很有可能会起作用,但目前,我似乎无法让它在 Arch 中活跃起来。
\n\n为了保存您的击键,您可以下载Sweave 文件和/或PDF 文件(在 Arch 机器上执行)。正如您所看到的,本地化字符在绘图函数中显示正确,但在 Sweave 中却出现乱码。现在,如果我尝试将图形保存到 PDF 文件(不使用 Sweaving),我会得到正确的输出。
\n\n所以,我已经解决了一些问题,但还有很多试错工作要做。
\n\n请在您的计算机上运行 .Rnw 文件,并给我一些反馈。为了简化事情,我创建了 Rscript 来收集我认为与本例相关的系统信息(不是个人信息):这里是源,这里是我的输出。
\n 归档时间: |
|
查看次数: |
1144 次 |
最近记录: |