tinyplot
简介
一个轻量级的 base R 图形系统扩展,支持 自动分组、图例、分面、主题以及各种其他 增强功能。
tinyplot 的稳定版本可在 CRAN 上获取。
install.packages("tinyplot")
或者,你可以从 R-universe 获取最新的开发版本。
install.packages("tinyplot", repos = "https://grantmcdermott.r-universe.dev")
为什么
在可视化框架方面,R 用户拥有令人眼花缭乱的选择。这些选择当然包括 ggplot2 和 lattice;更不用说围绕、基于以及介于这些出色包之间构建的令人困惑的扩展数组了。1
鉴于选项如此丰富,即使是狂热的 R 用户也可能忽视基础 R 的 graphics 系统,这或许是可以理解的。这是不幸的,因为基础 R 提供了非常强大且灵活的绘图功能。2 这种强大和灵活性的缺点是,基础 R 绘图可能需要大量的手动调整。一个典型的例子是使用适当的图例绘制分组数据。使用通用的 plot() 函数这样做可能需要多次函数调用或一个循环,摆弄你的绘图区域,然后手动生成图例。
tinyplot 包旨在消除这种开销。它提供了基础 R 图形系统的一个轻量级扩展,保留了相同的核心逻辑和语法,但包含众多便捷功能,使基础 R 绘图成为更用户友好的体验。例如,核心 tinyplot() 函数——或其简写别名 plt()——使得在单次函数调用中轻松绘制分组数据集并生成自动图例成为可能。或者,您可以在单独的 facet 中显示分组,而无需担心手动设置绘图区域。尽管 tinyplot 提供了这些以及其他各种增强功能,但它尽可能尝试成为等效基础绘图函数的直接替代品。用户通常应该能够将有效的 plot() 调用替换为 tinyplot()/plt(),而无需对预期输出进行任何更改。
值得强调的是,tinyplot 仅需要基础 R。它没有递归依赖项,我们已尽力将其安装大小降至最低。因此,tinyplot 应为希望生成便捷且复杂的绘图,同时保持最小占用的包开发者(或普通 R 用户!)提供一个有吸引力且轻量级的选项。
快速入门
tinyplot 网站包含一个详细的入门教程, 其中包含众多示例。但以下是该包运行的一些快速入门示例。
library(tinyplot)
带自动图例的分组散点图:
# with(iris, tinyplot(x = Petal.Length, y = Sepal.Length, by = Species)) # atomic
tinyplot(Sepal.Length ~ Petal.Length | Species, data = iris) # formula
如果您希望少按几次键,可以使用简写 plt() 别名,而无需完整输入 tinyplot()。
以下是使用此简写 plt() 别名的相同图表,以及新增的 "lm" 图层和一些美观调整:
plt(
Sepal.Length ~ Petal.Length | Species,
data = iris,
palette = "dark", pch = 16,
grid = TRUE, frame = FALSE
)
plt_add(type = "lm")
说到外观调整,tinyplot 还提供了一组 内置主题,以便轻松自定义绘图:
tinytheme("clean2")
plt(Sepal.Length ~ Petal.Length | Species, data = iris)
plt_add(type = "lm")

主题具有持久性,并将应用于后续的绘图。例如,以下是一个分组密度图:
plt(
~ Petal.Length | Species,
data = iris,
type = "density",
fill = "by",
main = "Distribution of petal lengths",
sub = "Grouped by species"
)
带有(连续)渐变图例的分组散点图,结合 分面布局:
plt(
Sepal.Length ~ Petal.Length | Sepal.Length, data = iris,
facet = ~Species, pch = 19,
main = "Faceted flowers", sub = "Brought to you by tinyplot"
)
# reset the theme
tinytheme()
希望这些内容足以激发你的兴趣。前往 入门 教程 查看更多示例,包括基于模型的图表类型和自定义图表类型。