书中的代码字体采用美观的 Source Code Pro 字体, 为方便跨操作系统编译书籍电子版,正文的中文字体采用开源的 fandol 字体。 而本书图形中使用的 Noto 系列中英文字体来自 Google Fonts 字体库,分别是 Noto Sans 无衬线英文字体和 Noto Serif SC 宋体中文字体。 图 1 中的左、右子图分别展示 Base R 和 ggplot2 (Wickham 2016) 图形中中英文字体的效果。在图形中调用中文字体分两步走,先使用 sysfonts 包获取并注册 Noto 相关字体,然后在绘图的时候指定字体,并在代码块选项中启用 fig.showtext = TRUE,这样就能在 R Markdown 环境中优雅地绘制含中文的图形。如果在 R Console 中绘图则需加载 showtext 包,运行函数 showtext_auto()。
代码
# 准备 Noto 中英文字体# sysfonts::font_add_google(name = "Noto Sans", family = "Noto Sans")# sysfonts::font_add_google(name = "Noto Serif SC", family = "Noto Serif CJK SC")# 在 Base R 图形中使用 Noto 字体plot(pressure, type ="b", pch =19, ann =FALSE, family ="Noto Sans")title(xlab ="温度", ylab ="压力", family ="Noto Serif CJK SC")# 在 ggplot2 图形中使用 Noto 字体library(ggplot2)ggplot(data = pressure, aes(x = temperature, y = pressure)) +geom_line() +geom_point(size =2) +labs(x ="温度", y ="压力") +scale_x_continuous(breaks =seq(0, 400, by =50)) +theme_bw(base_size =13) +theme(axis.title =element_text(family ="Noto Serif CJK SC"),axis.title.x =element_text(margin =margin(b =0, l =0, t =20, r =0) ),axis.title.y =element_text(margin =margin(b =0, l =0, t =0, r =20) ),panel.border =element_rect(color ="black"),panel.grid =element_blank(),axis.ticks.length =unit(0.25, "cm"),axis.text.x =element_text(family ="Noto Sans", color ="black",vjust =-1.5, size =rel(1.25) ),axis.text.y =element_text(family ="Noto Sans", color ="black",angle =90, vjust =1.5, hjust =0.5,size =rel(1.25) ) )