在某些時候,需要在R畫圖中添加中文,但是默認情況下,R對中文的支持不好。
當用R畫PDF圖,並且圖中有中文的時候,安裝並加載如下包
library(showtext)
然后:
showtext.auto(enable = TRUE)
這句命令表示之后用上同樣的字體。
如果要添加字體:
font.add('SimSun', regular = '/path/to/your/simsun.ttc')
這個地方要注意,你必須給定指定的字體的位置。
如果你使用的是MAC,可以打開 font book,查找你想要字體的位置。
如SimSun:/Library/Fonts/Microsoft/SimSun.ttf
library(showtext)
然后:
showtext.auto(enable = TRUE)
這句命令表示之后用上同樣的字體。
如果要添加字體:
font.add('SimSun', regular = '/path/to/your/simsun.ttc')
這個地方要注意,你必須給定指定的字體的位置。
如果你使用的是MAC,可以打開 font book,查找你想要字體的位置。
如SimSun:/Library/Fonts/Microsoft/SimSun.ttf
如果需要
將含有中文字體的圖形保存為
pdf
文件,同樣可以利用前面講到的方案,最新版的
showtext
包已經支持了
ggplot2
,推薦使用此種方案。
showtext
包理論上能夠調用系統已安裝的任何字體,完整的字體列表可以通過font.files()
查看。
這樣,在你寫的R代碼中,開頭添加
library(showtext)
showtext.auto(enable=True)
font.add('SimSun', regular = '/Library/Fonts/Microsoft/SimSun.ttf')
library(showtext)
showtext.auto(enable=True)
font.add('SimSun', regular = '/Library/Fonts/Microsoft/SimSun.ttf')
showtext.begin();
# 一系列繪圖命令
set.seed(123);
plot(1, xlim = c(-3, 3), ylim = c(-3, 3), type = "n");
text(runif(100, -3, 3), runif(100, -3, 3),
intToUtf8(round(runif(100, 19968, 40869)), multiple = TRUE),
col = rgb(runif(100), runif(100), runif(100), 0.5 + runif(100)/2),
cex = 2, family = "SimSun");
title("隨機漢字", family = "SimSun");
# 停止使用showtext
showtext.end();