簡體   English   中英

導航欄頁面和錯誤的ggvis更新情節閃亮

[英]navbar Page and wrong update of ggvis plot Shiny

你好
我只是創建Shiny應用程序。 但是,當我想以navbarPage方式展示我的Shiny應用程序時,存在一個小問題。 我的意思是,當我添加名為IntroductionnavbarPage時,可以很好地使用圖,直到...我回到Introduction navbarPage ,然后再次回到Plot navbarPage ,圖無法正常工作。 發生什么事了? 如何解決?

ui.R

library(dplyr)
library(shiny)
library(ggvis)

shinyUI(
  navbarPage("",
             tabPanel("Introduction",
                      fluidRow(
                        column(3,
                               wellPanel(
                               )

                        ),

                        column(9,
                               br(),br(),br(),
                               h5("This screen will soon display a brief introduction to the project.")
                        ) 
                      )
             ),     
             tabPanel("Plot",
                      fluidRow(
                        column(3,
                          radioButtons("dataset", label = h4("Choose dataframe"),
                                       choices = list("Item" = "df1", "Task" = "df2")),
                          selectInput("yvar", "Y-axis variable", axis_vars_y, selected = "number"),
                          uiOutput("slider")

                          ),
                    column(9,
                          ggvisOutput("plot")
        )
    )
  )
)
)

server.R

library(shiny)
library(dplyr)
library(magrittr)
library(lazyeval)

shinyServer(function(input, output) {

  datasetInput <- reactive({
    switch(input$dataset,
           df1 = df1,
           df2 = df2)
  })

  axis_vara_y <- reactive({
    switch(input$yvar,
           number = 2,
           number2 = 3)
  }) 

    output$slider <- renderUI({
      sliderInput("inslider","Slider", min   = round(min(datasetInput()[,axis_vara_y()]),0)-1, 
                                       max   = round(max(datasetInput()[,axis_vara_y()]),0)+1,
                                       value = c(round(min(datasetInput()[,axis_vara_y()]),0)-1, 
                                                 round(max(datasetInput()[,axis_vara_y()]),0)+1),
                                       step = 0.5)
})

data <- reactive({
  filteredData <- datasetInput()
  axisData <- axis_vara_y()

  if(!is.null(input$inslider)){
    filteredData <- filteredData %>%
      filter(filteredData[,axisData] >= input$inslider[1],
             filteredData[,axisData] <= input$inslider[2])
  }

  if (nrow(filteredData) == 0){
    return (datasetInput())
  }else{
    return(filteredData)
  }
})
  data_two <- reactive({
    data() %>%
      mutate(id = 1:n())

  })  

  vis <- reactive({

    yvar_name <- names(axis_vars_y)[axis_vars_y == input$yvar]
    yvar <- prop("y", as.symbol(input$yvar))

    data_two %>%
      ggvis(x = ~name, y = yvar) %>%    
      layer_points(size := 120,
                 fill = ~name,
                 fillOpacity := 0.6)

  })
  vis %>% bind_shiny("plot")
})

global.R

df1_number <-sample(seq(1,20,0.01),20,replace = T)
df2_number <-sample(seq(1,20,0.01),20,replace = T)
df1_number2 <-sample(seq(1,5,0.01),20,replace = T)
df2_number2 <-sample(seq(1,5,0.01),20,replace = T)

df1 <- data.frame(name = rep(letters[1:4],each = 5), number = df1_number, number2 = df1_number2)
df2 <- data.frame(name = rep(letters[1:4],each = 5), number = df2_number, number2 = df2_number2)
axis_vars_y <- c("number" = "number", "number2" = "number2")

我從來沒有把ggvis放進反應堆的運氣。 奇怪的事情像您經歷的一樣發生。 試試這個

shiny::runGist("https://gist.github.com/corynissen/9cdf1275f394e7945eb6")

您必須在data_two反應堆中分配y值,然后在reactactive()外部運行ggvis。

暫無
暫無

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

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