R能够支持的字体非常有限,而我们有时却希望使用楷体、Times New Roman之类的常用字体。在这种情况下,有两个解决办法,一种不需加载额外的R包,另一种需使用showtext包。
一、使用windows Fonts函数
第一种方法仅限Windows系统使用。
dat=read.csv("happy small.csv", row.names=1) # 课件中的文件
## 以下示例将使用多种字体添加标题并在面板中添加文字
# 第一步,加载字体
windows Fonts(new1=windows Font("楷体"))
windows Fonts(new2=windows Font("Times New Roman"))
windows Fonts(new3=windows Font("Wingdings"))
# 我们可以从Windows系统控制面板中的字体文件夹中查到字体名称。以上方法用于把这些名称输入R中。文件夹只包含"楷体 常规"这个名称,但在加载时我们要去掉"常规"二字。注意:此时即使加载了一个本不存在的字体,R也不会报错。等号前边的名称是我们赋予被加载字体的临时名称(可随意使用任何名称)
# 第二步,手动打开绘图窗口
windows()
# 第三步,作图并把family参数指向我们赋予被加载字体的名称(图5-3-1)
图5-3-1 使用windows Fonts函数
ggplot(dat)+
geom_text(aes(30000, 4, label="Add text\nhere."), size=12, family="new2", fontface=4)+
geom_text(show.legend=FALSE, aes(GDP_percap, Satisfaction, label=c("b", "Q", "J", "A", "c", "K", "L", "M", "N", "["), color=factor(1: 10)), size=12, family="new3")+
labs(title="使用多种字体")+ylim(2.5, 8)+
theme(plot.title=element_text(size=20, family="new1", face=4))
# 第四步,保存(www.xing528.com)
# 我们可以使用ggsave函数进行保存,亦可把包含图表的窗口拉动到合适的尺寸,点击左上角的"File",再点击"Save as"并选择保存格式(推荐使用png格式,不要使用pdf格式)
二、使用showtext包
第二种方法在两方面不同于第一种方法:首先,第二种方法可以确保pdf文件中的汉字能够正常显示;其次,第二种方法既适用于Windows也适用于Mac OS。另外,showtext包的功能在被开启后可能会使第一种方法失效,所以请在每次作图时只使用一种方法。
# install.packages("showtext")
library(showtext)
# 第一步,加载字体
font_add(family="lishu", regular="SIMLI.TTF") # font_add的family参数指向任意一个临时名称。注意:regular参数指向的不是字体的名称,而是文件名。具体来讲,如果要加载隶书字体,我们不能将regular指向"隶书",而应该指向字体文件的名称。我们右键点击代表隶书字体的文件,再点击"属性"就可以看到文件名"SIMLI.TTF"了
font_add(family="times", regular="times.ttf", bold="timesbd.ttf", italic="timesbi.ttf", bolditalic="timesi.ttf") # 在加载Times New Roman时,我们右键点击文件后没有找到"属性",因此点击"打开"。我们看到该字体包含四个文件,分别与常规、粗体、斜体和粗斜体相对应。我们右键点击这四个文件并点击"属性"查看文件名,再把regular、bold、italic、bolditalic参数指向这些文件名。只有这样,我们才能在作图时使用粗体、斜体和粗斜体。相反,隶书字体只包含一个文件(即"SIMLI.TTF"),这意味着我们无法使用它的粗体、斜体和粗斜体
# 第二步,开启功能
showtext_auto() # 仅在输入这一代码后,showtext包的功能才会开启
# 第三步,打开作图设备:在Windows中输入windows(),在Mac OS中输入
quartz()
windows()
# 第四步,作图
ggplot()+geom_text(aes(0, 0, label="Add text\nhere."), family="times", size=15, fontface=4, color="red")+
labs(title="标题")+
theme(plot.title=element_text(family="lishu", size=30))
# 第五步,保存
# 保存图表的操作与第一种方法相同。不同之处在于,当使用ggsave函数以pdf格式保存时,汉字可以正常显示
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。