编织文档内ggplot中的非英文字符

时间:2019-05-25 20:00:40

标签: r ggplot2 knitr

我正在尝试将RStudio中的立陶宛语字符(如ččęėįšųž)从.Rmd文件转换为pdf文件。编织到html可以正常工作并且ggplot标题具有立陶宛语字符时,编织到pdf ggplot时会创建警告并消除这些字符。

可复制的示例:

---
title: "Untitled"
output:
  pdf_document:
    includes:
      in_header: header_lt_text.txt
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
```


## Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž
```{r}
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
    geom_point(aes(col=Species))+
    labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")

```

我通过以下参数传递header_lt_text.txt

\usepackage[utf8]{inputenc}
\usepackage[L7x]{fontenc}
\usepackage[lithuanian]{babel}

\usepackage{setspace}
\onehalfspacing

关于如何使ggplot创建正确标签的任何建议?

enter image description here

1 个答案:

答案 0 :(得分:2)

清理后的答案:

问题出在pdf设备上,并且仅在将图片另存为pdf时才明显(您希望使用它,因为它看起来要好得多)。这就是为什么在某些情况下似乎“起作用”的原因:图片未呈现为pdf格式,例如作为png。感谢@Konrad正确识别了问题的根源。

要解决此问题,您需要将正确的编码传递给pdf设备。 幸运的是,pdf设备(?pdf)带有encoding参数和there is a chunk option来将参数传递给设备:dev.args

在Windows上,适当的编码为CP1257.enc(波罗的海语):

```{r dev="pdf", dev.args=list(encoding="CP1257.enc")}
  ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(col=Species))+
  labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")
```

您可以通过list.files(system.file("enc", package = "grDevices"))

看到其他可用的编码。

在我的linux机器上运行良好:

success2

或者,如果您愿意在pdf中插入png图片,则可以在块选项中简单地使用dev="png"。看起来还不怎么样。