R 闪亮 ggvis add_legend 问题

R Shiny ggvis add_legend issue

我正在制作一个交互式闪亮图,用户可以在其中 select 他们在每个轴上想要的内容,以及为点着色的属性。

为简单起见,我在这里提供了一个虚拟数据集:

test_df <-tibble(test_x = sample(c(1:100), 10),
                 test_y = sample(c(1:100), 10),
                 variable = rep(c("A", "B"), 5),
                 colour = rep(c("orange", "green"), 5))

下面的代码工作正常(也适用于我的真实反应图,它更复杂并且有额外的参数):

test_df %>%
  ggvis(x = ~test_x, y = ~test_y, fill:= ~colour) %>%
  layer_points()

但是,当我尝试添加图例(使用 add_legend())时,生成的图是空白的。它 不会 产生错误消息(既不在这个虚拟代码中,也不在真实的例子中)。使用的代码是:

test_df %>%
  ggvis(x = ~test_x, y = ~test_y, fill:= ~colour) %>%
  layer_points() %>%
  add_legend(scales = "fill", title = "blah") 

我尝试使用以下问题中提供的信息和帮助信息,但没有成功。

ggvis interactive figure does not work as expected using reactive values

ggvis output not appearing in shiny application

我觉得我遗漏了一些非常明显的东西,因此非常感谢任何建议或指导。我也知道 shiny 版本需要更复杂的代码,但我觉得如果我能先在本地运行它,这将帮助我弄清楚下一步。

注意:我需要使用 ggvis 来启用悬停在工具提示上。我知道这可以简单地使用其他图形包来完成,但我需要 ggvis 答案。

谢谢!

我不明白为什么你的代码不起作用。也许只是它不应该以这种方式使用。我发现的唯一解决方法是下面的解决方法,但我很确定可以做一些更好的事情。

test_df %>%
  ggvis(x = ~test_x, y = ~test_y, fill = ~colour) %>%
  add_legend(scales = "fill", title = "blah") %>%
  scale_ordinal("fill", range = unique(test_df$colour)) %>%
  layer_points()