在 scale_y_continuous 中使用匿名函数
using anonymous function within scale_y_continuous
我可以使用 function(y) comma(y)
在 scale_y_continuous() 中调用匿名函数,但我不能使用 ~ 约定调用匿名函数。在这种情况下可以使用 ~ 吗?
library(scales)
library(ggplot2)
mtcars$model <- rownames(mtcars)
# Success
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = function(y) comma(y))
# Fail
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = ~comma(y))
一个选项是在 purrr::as_mapper
内换行
library(scales)
library(ggplot2)
library(purrr)
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = as_mapper(~ comma(.)))
或使用rlang::as_function(~ comma(.))
或者直接使用comma
而不调用任何匿名函数
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = comma)
我可以使用 function(y) comma(y)
在 scale_y_continuous() 中调用匿名函数,但我不能使用 ~ 约定调用匿名函数。在这种情况下可以使用 ~ 吗?
library(scales)
library(ggplot2)
mtcars$model <- rownames(mtcars)
# Success
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = function(y) comma(y))
# Fail
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = ~comma(y))
一个选项是在 purrr::as_mapper
library(scales)
library(ggplot2)
library(purrr)
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = as_mapper(~ comma(.)))
或使用rlang::as_function(~ comma(.))
或者直接使用comma
而不调用任何匿名函数
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) +
geom_col() +
scale_y_continuous(labels = comma)