用knitr生成pdf时,作图标题使用中文乱码的问题困扰了我一段时间,在网上逛了很多地方一直没有找到解决办法,很多地方都说用showtext解决作图中文乱码问题,但是并没有提到knitr pdf时的问题,直到前几天重新看了一下自己firefox的收藏夹,打开了这里knitr/issues/799,重新看了一下,才找到了解决办法,就是设置chunk$set参数fig.showtext=TRUE
,就解决了。
但是在rmarkdown文档中把---
部分改成生成output: html_document
时,发现作图中字体变得特别小,所以不知道这个算不算一个小issue,当然这个完全可以简单的用showtext.auto()
解决。
这是在看了yihui这篇博文后,给了我这个beginner勇气把自己发现的问题发出来。(这个问题其实这几天想在stackoverflow上面问的,鉴于英文水平有限,不知道怎么组织语言,所以一直没有上去问)
其实yihui是鼓励beginner问问题的,但是每个人的时间都是有限的,尤其是大神们的时间,在很多地方看了yihui的文章都提到一些提问的方法,总结有下面三点:
其实前面两点并不难,而对于第三点,其实是比较难保证的,因为确实不知道会在哪里有人提问过同样的问题-_-!。
说了很多题外废话,回到正题,以下为rmarkdown文档内容(不知道怎么把整篇代码贴上来):
---
title: "在R Markdown文档中使用中文"
author:
- test
output: html_document
---
问题
设置chunk$set参数fig.showtext=TRUE
,生成html_document时,作图上的字体太小,不知道这个算不算一个小issue?或许这个参数就是专门为生成pdf时而设?
showtext.auto
用showtext.auto的情况下,图片中的中文字体大小正常。
require(ggplot2)
require(showtext)
font.add("kaiti", "simkai.ttf")
font.add("heiti", "simhei.ttf")
showtext.auto()
ggplot(pressure,mapping = aes(temperature, pressure)) +
geom_point() +
ggtitle("中文标题") +
xlab("x轴") +
ylab("y轴") +
theme(text = element_text(family = "heiti"))
fig.showtext=TRUE
在knitr的chunk set参数设置为fig.showtext=TRUE
时,生成的图片中字体变得特别小。而在用rticles的ctex模板生成pdf时不存在这个问题。
所以,不知道fig.showtext=TRUE
这个参数是否专门为生成pdf设置?
knitr::opts_chunk$set(fig.showtext = TRUE)
ggplot(pressure,mapping = aes(temperature, pressure)) +
geom_point() +
ggtitle("中文标题") +
xlab("x轴") +
ylab("y轴") +
theme(text = element_text(family = "heiti"))