source(file = "_common.R")
现代统计图形(第二版)
欢迎
本书是《现代统计图形》(赵鹏, 谢益辉, 和 黄湘云 2021) 的后续第二版,尚处于草创阶段。
排版约定
书中的代码字体采用美观的 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)
) )
图 2 是一幅手绘漫画风格的图形,展示了三种不同鸢尾花的萼片宽度和长度的关系。
代码
# brew tap homebrew/cask-fonts
# brew install --cask font-xkcd
if (xfun::is_macos()) {
::font_add("xkcd", regular = "xkcd.otf")
sysfontselse {
} ::font_add("xkcd", regular = "xkcd.ttf")
sysfonts
}ggplot(data = iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(color = Species, shape = Species)) +
scale_color_grey() +
theme_bw(base_size = 13, base_family = "xkcd") +
theme(
panel.border = element_rect(color = "black"),
panel.grid = element_blank()
)
如读者所见,本书不会局限于作图的工具,除了上面已经展示的 Base R 和 ggplot2,还会陆续用到 lattice (Sarkar 2008) 和 rgl 包,甚至会超出 R 语言的范畴,介绍 LaTeX 世界里的 TikZ 和 JavaScript 中的 WebGL 等。
在掌握各类现代的绘图技术后,回归统计图形的落脚点,从数据传递的信息出发,选择合适的图形和实现工具,兼顾美观,到达「道」与「术」和谐统一的境界。
书中参考文献的样式一律遵守2015年国家颁布的《GB/T 7714-2015 信息与文献 参考文献著录规则》,全书使用作者年份引用格式,感谢胡振震开发的 biblatex-gb7714-2015 宏包,使参考文献的引用在 LaTeX 文档中变得更容易,解放了一部分排版编辑工作,让作者腾出时间专注于内容。