将列名作为字符串传递给ggvis的fill参数

4

ggvis将根据我传递给它的分组列自动为我的图形着色。因此,如果我的分组列名为“area”,我可以编写以下代码,它将完美地执行。

names = c("Bacilli", "Actinobacteria", "area")
b_counts <- c(1,5,8,100,34,3)
a_counts <- c(1,3,11,55,67,11)
area <- c("Gut", "Skin", "Gut", "Gut", "Skin", "Oral")
rel_data <- data.frame(b_counts, a_counts, area)
names(rel_data) <- names

library(ggvis)
library(dplyr)

rel_data %>% ggvis(x = input_select(names(rel_data[,-3]), map = as.name, label = "X Axis"), 
               y = input_select(names(rel_data[,-3]), map = as.name, label = "Y Axis")) %>%
  filter(area %in% eval(input_checkboxgroup(unique(rel_data$area), selected = "Gut"))) %>%
  layer_points(fill = ~area) ### section of interest

然而,如果我想将列名作为字符串传递,就无法使其正常工作。例如:

region <- "area"
layer_points(fill = ~region)

我尝试了as.name、eval、quote等方法,但似乎都没能实现。有人有什么建议吗?

1个回答

3

属性和刻度页面中有一条提示:

layer_points(prop("fill", as.name(region)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接