在某些时候,需要在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();