[英]navbar Page and wrong update of ggvis plot Shiny
你好
我只是創建Shiny應用程序。 但是,當我想以navbarPage
方式展示我的Shiny應用程序時,存在一個小問題。 我的意思是,當我添加名為Introduction
新navbarPage
時,可以很好地使用圖,直到...我回到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.