【问题标题】:R Shiny ggvis add_legend issueR Shiny ggvis add_legend 问题
【发布时间】:2018-09-28 20:40:55
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

  • 你有一个错字,应该是fill= ~colour。否则它对我有用。
  • @kluu 感谢您的回复。但是,我需要在该列中列出这些点的特定颜色,因此是冒号。如果没有冒号,我会得到错误的颜色分配给点。
  • 哦,我的错,甚至没有检查输出的颜色。
  • @kluu 没问题!无论如何,我花了一段时间才弄清楚这一点:)还有什么想法吗?

标签: r shiny ggvis


【解决方案1】:

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

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()

【讨论】:

  • 谢谢@kluu!在某种程度上,知道我不只是遗漏了一些明显的东西,这让我稍微松了一口气!该解决方案适用于虚拟数据集,因此我将看看它是否适用于我更复杂的示例。再次感谢!
  • 好的,所以这个解决方案在某种程度上有效;它不会破坏情节(huzzah)。但是,在我的真实示例中,我只看到标题的图例,没有内容。所以这是一个进步!我认为现在的问题是由于反应器等如何相互作用。不过谢谢你的帮助!
  • 因此,为我的实际闪亮用例完成这项工作的最后一块拼图是在 scale_ordinal() 函数中包含 domain = unique(test_df$variable) 的等效项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2016-10-11
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多