簡體   English   中英

在ggvis中使用帶懸停的add_tooltip時,排除顯示信息的行/點

[英]Exclude line/points from showing info when using add_tooltip with hover in ggvis

我一直在玩這個漂亮的ggvis包。 我正在進行自定義線性回歸,並希望工具提示顯示有關每個數據點的信息。 但是,當我添加回歸線時,當我將鼠標懸停在線上時會顯示工具提示,然后顯示有關第一個數據點的信息(參見屏幕截圖)。 我提供了這個簡單可重復的例子:

library(ggvis)
mtc <- mtcars
lm=with(mtc,lm(mpg~wt))
mtc$fit=lm$coefficients[1]+mtcars$wt*lm$coefficients[2]
mtc$id <- 1:nrow(mtc)  # Add an id column to use ask the key

all_values <- function(x) {
    if(is.null(x)) return(NULL)
    row <- mtc[mtc$id == x$id, ]
    paste0(names(row), ": ", format(row), collapse = "
           ")
}

mtc %>% ggvis(x = ~wt, y = ~mpg, key := ~id) %>%
    layer_points() %>%layer_lines(x= ~wt,y= ~fit)%>% 
    add_tooltip(all_values, "hover")

這產生了這個 在此輸入圖像描述

我想從工具提示中排除回歸線,因此它只顯示有關數據點的信息。 有沒有辦法實現這個目標? 謝謝您的幫助!

經過一段時間的游戲,我得到了它的工作。

首先,我需要為此構建兩個單獨的數據集。 一個用於線性模型數據,一個用於mtcars。

構建數據

mtc <- mtcars
mtc$id <- 1:nrow(mtc) 

lm=with(mtc,lm(mpg~wt))
df=data.frame(fit=lm$coefficients[1]+mtcars$wt*lm$coefficients[2])
df$id <- 101:132
df$wt <- mtcars$wt

如上所示,mtc是帶有mtcars數據的數據,df是線性模型數據。 請注意,在df中我添加了一個id列,它的所有值都大於100,並且與mtc data.frame完全不同。

每當您將鼠標懸停在點上時, all_values將從mtc訪問id列,每當您將鼠標懸停在該行上時, all_values將從df訪問id列。

我在下面的函數中添加了一行,這就是它的工作原理:

all_values <- function(x) {
  #if the id is greater than 100 i.e. the df data.frame
  #then return NULL
  if(x$id>100) return(NULL)
  if(is.null(x)) return(NULL)
  row <- mtc[mtc$id == x$id, ]
  paste0(names(row), ": ", format(row), collapse = "
           ")
}

然后繪制兩個單獨的data.frames。 add_tooltip將為兩個data.frames找到id變量:

ggvis(x=~wt) %>%
     layer_points(data=mtc, y = ~mpg, key := ~id) %>%
     layer_paths(data=df,y= ~fit, key := ~id) %>%
     add_tooltip(all_values, "hover")

我無法顯示與此圖表的完全交互性,但您可以在下面的圖片中看到,雖然我的光標在線上方但沒有顯示任何信息。

在此輸入圖像描述

而這些點確實在懸停時顯示信息。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM