我正在创建如下的ggplot barplot
fill_by <- "some_column"
g <- ggplot(plot_data,aes(x = xvals,y = yvals, fill = fill_by)) +
geom_bar(stat = "identity")
在这里,fill_by
是一个变量,其中包含我要用其填充竖线的列的名称。在函数中使用fill = fill_by
不能产生期望的结果,因为没有名为“ fill_by”的列。将eval
包装在fill_by
周围没有帮助,并使用
fill_by <- enquo(fill_by)
g <- ggplot(plot_data,aes(x = xvals,y = yvals, fill = !!fill_by)) +
geom_bar(stat = "identity")
提到的here也不起作用。
是否可以通过这种方式动态指定fill参数的值?理想的解决方案可以容纳指定为la
的多个列fill_by = c("col 1", "col 2")
等
答案 0 :(得分:1)
在这种情况下,应使用sym
从字符切换到名称。
https://edwinth.github.io/blog/dplyr-recipes/
library(dplyr)
fill_by <- "cyl"
fill_by <- sym(fill_by)
ggplot(mtcars %>% tibble::rownames_to_column() %>% head(3),
aes(x = rowname,y = mpg, fill = !!fill_by)) +
geom_bar(stat = "identity")
fill_by <- "qsec"
[same as above]