如何在 ggplot 代码中以 fct_reorder 中的字符串形式提供变量名称?
How to supply variable names as strings in fct_reorder within ggplot code?
我想通过以字符串形式提供变量名称来创建 geom_col 图表。我知道 aes_string 在 ggplot 代码中执行此操作。但是,我不确定如何处理 fct_reorder 中提供的变量来订购金条。这是我的 wip 代码。
我要转换为:
mpg %>%
ggplot() +
geom_col(aes(x = cty, y = fct_reorder(drv, cty, .fun = mean, na.rm = T), fill = drv), width = 0.8) +
theme_classic()
进入一个函数,
chart_fun <- function(x, y) {
mpg %>%
ggplot() +
geom_col(aes_string(x = x, y = fct_reorder(y, x, .fun = mean, na.rm = T), fill = y), width = 0.8) +
theme_classic()
}
chart_fun(x = "cty", y = "drv")
但我收到一个错误,“错误:未使用 ...
的 1 个组件。我们检测到这些有问题的参数:* na.rm
您是否指定了一个参数?”
如何修复此代码?
如果您想将变量作为字符串传递,您还可以使用 .data
代词,这样您就可以坚持使用 aes()
:
library(ggplot2)
library(dplyr)
library(forcats)
chart_fun <- function(x, y) {
mpg %>%
ggplot() +
geom_col(aes(x = .data[[x]], y = fct_reorder(.data[[y]], .data[[x]], .fun = mean, na.rm = T), fill = .data[[y]]), width = 0.8) +
theme_classic()
}
chart_fun(x = "cty", y = "drv")
我想通过以字符串形式提供变量名称来创建 geom_col 图表。我知道 aes_string 在 ggplot 代码中执行此操作。但是,我不确定如何处理 fct_reorder 中提供的变量来订购金条。这是我的 wip 代码。
我要转换为:
mpg %>%
ggplot() +
geom_col(aes(x = cty, y = fct_reorder(drv, cty, .fun = mean, na.rm = T), fill = drv), width = 0.8) +
theme_classic()
进入一个函数,
chart_fun <- function(x, y) {
mpg %>%
ggplot() +
geom_col(aes_string(x = x, y = fct_reorder(y, x, .fun = mean, na.rm = T), fill = y), width = 0.8) +
theme_classic()
}
chart_fun(x = "cty", y = "drv")
但我收到一个错误,“错误:未使用 ...
的 1 个组件。我们检测到这些有问题的参数:* na.rm
您是否指定了一个参数?”
如何修复此代码?
如果您想将变量作为字符串传递,您还可以使用 .data
代词,这样您就可以坚持使用 aes()
:
library(ggplot2)
library(dplyr)
library(forcats)
chart_fun <- function(x, y) {
mpg %>%
ggplot() +
geom_col(aes(x = .data[[x]], y = fct_reorder(.data[[y]], .data[[x]], .fun = mean, na.rm = T), fill = .data[[y]]), width = 0.8) +
theme_classic()
}
chart_fun(x = "cty", y = "drv")