【问题标题】:Possible bug for tooltip in ggivs?ggivs 中工具提示的可能错误?
【发布时间】:2016-03-11 20:13:36
【问题描述】:

下面的代码不能正常工作, 也就是说,当指针悬停在一个点上时, 它应该显示数字...

iris$Sepal.Length.j <- jitter(iris$Sepal.Length)
iris$Sepal.Width.j <- jitter(iris$Sepal.Width)
iris$Num <- 1:nrow(iris)
iris %>% group_by(Species) %>% 
  ggvis(~Sepal.Length.j, ~Sepal.Width.j, opacity:=0.5) %>% 
  layer_points(fill=~Species) %>% layer_smooths(stroke=~Species) %>%
  add_tooltip(html=function(x) {
    if (!is.list(x)) return()
    x$Num}, on="hover")

这是一个可能的错误还是我误解了? 下面的代码运行良好。

iris %>% group_by(Species) %>% 
  ggvis(~Sepal.Length.j, ~Sepal.Width.j, opacity:=0.5) %>% 
  layer_points(fill=~Species) %>% layer_smooths(stroke=~Species) %>%
  add_tooltip(html=function(x) {
    if (!is.list(x)) return()
    x$Sepal.Width}, on="hover")

【问题讨论】:

    标签: r ggvis


    【解决方案1】:

    这里发生了几件事。首先是关于 ggvis 使用的数据列。

    来自add_tooltip 帮助页面的“示例”部分:

    从客户端发送到服务器的数据只包含数据列 在情节中使用。如果要获取其他列的数据, 您应该使用键将绘图中的项目与一行对齐 在数据中。

    在您的第二个情节中,Sepal.Width 用于情节中,因此可用于工具提示。但是您从未在绘图代码中使用过Num,因此无法在工具提示中使用它。要将Num 保留在绘图的数据列中,您需要指出这是您的key 列。

    这很容易解决 - 只需将 key := ~Num 添加到 layer_points

    分组和工具提示还有一些其他微妙的问题,其中一些在this answer 中进行了概述。在您的情况下,如果您在 layer_pointslayer_smooth 之前分组,我认为工具提示可以按照您的意愿工作。

    所以你的代码可能看起来像:

    iris %>%
        ggvis(~Sepal.Length.j, ~Sepal.Width.j, opacity:=0.5) %>% 
        layer_points(fill=~Species, key := ~Num) %>% 
        group_by(Species) %>%
        layer_smooths(stroke=~Species) %>%
        add_tooltip(html=function(x) {
            if (!is.list(x)) return()
            x$Num}, on="hover")
    

    【讨论】:

      【解决方案2】:

      绘图的输入数据集中没有名为“Num”的列 - 这就是它不起作用的原因。您的第二个示例有效,因为“Sepal.Width”是虹膜数据中的一列。

      【讨论】:

      • 我不知道您是如何获得这些列的。你确定你已经提供了上面运行的所有代码吗?
      • 这是我跑的:library(ggvis) data(iris) iris$Sepal.Length.j &lt;- jitter(iris$Sepal.Length) iris$Sepal.Width.j &lt;- jitter(iris$Sepal.Width)
      • 我得到:colnames(iris) [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" "Sepal.Length.j" "Sepal .Width.j"
      • 看起来这可能会有所帮助:stackoverflow.com/questions/31360263/…
      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      相关资源
      最近更新 更多