【发布时间】:2020-12-10 11:58:41
【问题描述】:
我想将一些附加信息添加到 ggplot 图的构面标签中,这些信息来自该图所基于的数据。由于各种原因,我试图在事后执行此操作,而不是依赖对数据的临时更改。
我试图在 label_wrap_gen 上对我的贴标机函数进行建模,认为我不妨将数据框变量作为参数添加到函数中,而不是 label_wrap_gen 采用的固定数字。
但是,这并没有按预期工作。我得到的不是最左边的“4 (5)”,而是“4 ()”。问题似乎是app_n 没有获取实际数据,或者类似的东西。如果只使用en 而不是.data$en(如下),则会收到未找到变量的错误。
app_n <- function(.n) {
fun <- function(labels) {
labels <- label_value(labels, multi_line = TRUE)
lapply(labels, function(x) {
x <- paste0(x, '(', .n, ')')
vapply(x, paste, character(1), collapse = "\n")
})
}
structure(fun, class = 'labeller')
}
mtcars %>%
group_by(cyl) %>%
mutate(en = 5) %>%
ggplot(aes(drat, wt)) +
facet_wrap(~ cyl, labeller = app_n(.n = .data$en))
我采取这条路线的原因是,在我的实际应用程序中,我试图将样本大小添加到构面标签中,并且出于“我想了解这是否可能”以及“代码已经够复杂了”我首先尝试走这条路。
这可以工作吗? (是的,我知道这可能会导致向量作为文本插入。虽然这不适用于我的实际绘图,但在这个阶段我很乐意得到这个结果)
【问题讨论】: