默认情况下,R 语言的作图工具包 ggplot2 使用的字体不包含中文,无法显示汉字。如果你的图表中包含中文字符,它们大概率会变成方块(甚至希腊字母也会)。可通过如下方法使汉字得以正确显示。
1 安装需要的软件包
R shell 中执行如下命令,
install.packages(showtext)
2 查看当前可用字体
R shell 中执行如下命令,
library(showtext)
font_families()
可得到如下形式的输出:
[1] "sans" "serif" "mono" "wqy-microhei"
一般而言,Ubuntu 系统中包含中文字体 “wqy-microhei”,我们直接用它即可。
3 修改作图代码
以下面这个脚本为例,原始代码中没有包含修改字体的指令,使用的是默认的、不支持中文的字体。
#!/usr/bin/Rscript
library(ggplot2)
mydata1 <- read.csv('mydata1.csv')
ggplot(mydata1, aes(x = TOC)) + geom_density(aes(color=grp))
修改后的代码如下:
#!/usr/bin/Rscript
library(ggplot2)
library(showtext) #加载 showtext 程序包
showtext_auto() #让脚本自动处理汉字
mydata1 <- read.csv('mydata1.csv')
ggplot(mydata1, aes(x = TOC)) + geom_density(aes(color=grp)) + theme(text = element_text(family = "wqy-microhei")) #+ theme(text =...) 是修改绘图过程中的全局字体设置。
附:使用自己的字体
如果系统中没有中文字体,我们还可以修改作图脚本、加载自定义字体。
首先将字体文件(.ttf 格式)放在脚本所在的文件夹中,然后编辑脚本:
#!/usr/bin/Rscript
library(ggplot2)
library(showtext)
font_add("myfont", "myfont.ttf") #加载自定义字体,第一个参数为字体名称,第二个参数为字体文件的名称。
showtext_auto()
mydata1 <- read.csv('mydata1.csv')
ggplot(mydata1, aes(x = TOC)) + geom_density(aes(color=grp)) + theme(text = element_text(family = "myfont")) #应用自定义字体