渲染线立即消失,并在ggvis中悬停问题

时间:2015-02-12 20:40:43

标签: r shiny ggvis

我有两个可能相关或不相关的问题。 这是代码,演示了这两个问题 UI.r

library(shiny)
library(shinyBS)
shinyUI(fluidPage(
  titlePanel("Basic example"),

  fluidRow(
  mainPanel(
   # ggvisOutput("fiveMinPlot"),
    uiOutput("plotUI"))

)))

server.r

library(shiny)
library(shinyBS)

tooltipMaker <- function(x){
  if(is.null(x)) return(NULL)
  row <- testData[testData$rowID == x$rowID,]
  paste0(c('TradeID','time','PL'), ": ", format(row[,c('TradeID','time','PL')]), collapse = "<br />")
}
testData <- data.frame(cbind(time = rep(-4:10 * 500,3),
                             TradeID=c(rep("this",15),rep("that",15),rep("the other",15)),
                             PL=c(1:15,4:18,7:21),
                             theColor=c(rep("green",15),rep("lightblue",15),rep("red",15)),
                             theWidth=c(rep(1,30),rep(2,15)),
                             rowID=1:45))
as.numericDF <- function(dataframe) 
{
  if(class(dataframe)!="data.frame") dataframe <- data.frame(dataframe)
  for(i in 1:length(dataframe)){
    suppressWarnings({
      if(!any(is.na(as.numeric(levels(dataframe[[i]])))))
        dataframe[[i]] <- as.numeric(levels(dataframe[[i]])[as.numeric(dataframe[[i]])])
    })
  }
  return(dataframe)
}

shinyServer(function(input, output) {
  observe({
    testData <- as.numericDF(testData)
    ggvis(testData,x=~time,y=~PL, stroke := ~theColor,strokeWidth:=~theWidth,key := ~rowID) %>% layer_lines()%>%
      add_tooltip(tooltipMaker,"hover") %>%
      bind_shiny("theGraph")
  })
  output$plotUI <- renderUI({ #this best represents my actual code
    return(ggvisOutput("theGraph"))
  })
})

问题#1

仔细观察时运行它,所有3条线渲染,然后2立即消失。在这种情况下,红色似乎总是保留,但在我的样本中随机设置它。

我使用chrome的内置检查器打开生成的HTML,发现看起来所有3行都被第一行替换。

http://imagizer.imageshack.us/a/img661/831/sRgYMY.jpg

然后我刷了很多次刷新。令我惊讶的是,它在大约20%的时间内正常工作。这是它工作时的样子

http://imagizer.imageshack.us/a/img540/3053/0CrwFP.jpg

有时它如何运作?!我以为计算机是确定性的......

问题#2

将鼠标悬停在一条线上。

您会注意到悬停数据始终显示代表最左侧数据点的数据。 为什么呢?

0 个答案:

没有答案