当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R ggplot2 labellers 有用的贴标机函数


贴标机函数负责格式化小面网格和包的条带标签。它们中的大多数接受 multi_line 参数来控制多个因子(在公式中定义,例如 ~first + second )是否应显示在以逗号分隔的单行上,或者每个因子都显示在自己的行上。

用法

label_value(labels, multi_line = TRUE)

label_both(labels, multi_line = TRUE, sep = ": ")

label_context(labels, multi_line = TRUE, sep = ": ")

label_parsed(labels, multi_line = TRUE)

label_wrap_gen(width = 25, multi_line = TRUE)

参数

labels

标签的 DataFrame 。通常只包含一个元素,但多个因子的分面需要多个标签变量。

multi_line

是否在单独的行上显示多个因子的标签。

sep

分隔变量和值的字符串。

width

包条带之前的最大字符数。

细节

label_value()仅显示因子的值,而label_both()同时显示变量名称和因子值。 label_context() 是 context-dependent,对于单因子分面使用 label_value(),当涉及多个因子时使用 label_both()label_wrap_gen() 使用base::strwrap() 进行换行。

label_parsed() 将标签解释为绘图数学表达式。 label_bquote() 提供了一种更灵活的构建绘图数学表达式的方法。有关参数语法的详细信息,请参阅示例和bquote()

编写新的标签函数

请注意,编写贴标器函数的一种简单方法是使用 as_labeller() 转换对字符向量进行操作的函数。

贴标器函数接受标签 DataFrame (字符向量),其中每个因子包含一列。 ~first + second 类型的公式会出现多个因子。

返回值必须是一个矩形列表,其中每个 'row' 代表一个面。列表元素可以是字符向量或绘图表达式列表。当返回多个元素时,它们会显示在自己的新行上(即每个方面都有一个多行标签条)。

为了说明这一点,假设您的贴标器返回一个由两个长度为 3 的字符向量组成的列表。这是一个矩形列表,因为所有元素都具有相同的长度。第一个方面将获取每个向量的第一个元素并将它们每个显示在自己的行上。然后第二个方面获取每个向量的第二个元素,依此类推。

如果它对您的贴标机有用,您可以检索传入标签数据帧的 type 属性。该属性的值反映贴标机正在处理的条带类型:"cols" 表示列,"rows" 表示行。请注意,facet_wrap() 默认情况下具有列,当使用 switch 选项切换条带时具有行。 facet 属性还提供标签上的元数据。它采用值 "grid""wrap"

为了与 labeller() 兼容,每个贴标器函数必须具有 labeller S3 类。

例子

mtcars$cyl2 <- factor(mtcars$cyl, labels = c("alpha", "beta", "gamma"))
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()

# The default is label_value
p + facet_grid(. ~ cyl, labeller = label_value)


# \donttest{
# Displaying both the values and the variables
p + facet_grid(. ~ cyl, labeller = label_both)


# Displaying only the values or both the values and variables
# depending on whether multiple factors are facetted over
p + facet_grid(am ~ vs+cyl, labeller = label_context)


# Interpreting the labels as plotmath expressions
p + facet_grid(. ~ cyl2)

p + facet_grid(. ~ cyl2, labeller = label_parsed)

# }
源代码:R/labeller.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Useful labeller functions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。