【问题标题】:Non English characters in ggplot within a knitr documentknitr文档中ggplot中的非英文字符
【发布时间】:2019-05-25 20:00:40
【问题描述】:

我正在尝试从 .Rmd 文件中将 RStudio 中的 ąčęėįšųž 等立陶宛字符编成 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 创建正确的标签有什么建议吗?

【问题讨论】:

  • @bbiasi 不幸的是,我的问题与主文档无关,而与嵌入的 ggplot2 图表有关。我用标题清除主文档中的任何问题,包括\usepackage[L7x]{fontenc}
  • 您使用的是 Windows 吗? R on WINdows 总是有 UTF-8 编码的问题。
  • 我在这个问题上开了一个赏金,希望对你有所帮助。

标签: r ggplot2 knitr


【解决方案1】:

问题出在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 机器上运行良好:

或者,如果您愿意在 pdf 中插入 png 图像,您可以在块选项中简单地使用 dev="png"。不过看起来不太好。

【讨论】:

    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多