Мои решения / ответы на ваши три вопроса.
1.Как вы хотите узнать, как управлять осью Y с помощью sliderInput, код ниже объясняет, как это сделать.
library(shiny)
library(plotly)
library(DBI)
library(pool)
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "db",host = "localhost",username = "root",password = "psw", port = 3306)
data <- dbGetQuery(pool, "SELECT * FROM testTable;")
ui <- fluidPage(
titlePanel("Demo"),
sidebarLayout(
sidebarPanel(
sliderInput("bins", "Number of bins:", min = 0, max = 100, value = 70)
),
mainPanel(
tabPanel("Heading", plotlyOutput("tbTable"),
plotOutput("basicPlot") # Added extra as an Example for 3rd question
)
)
)
)
server <- function(input, output, session) {
QueriedData <- reactive({
df <- data[data$total <= input$bins,] # filtering datafarme based on sliderInput
return(df)
})
output$tbTable <- renderPlotly({
plot_ly(QueriedData(), x = ~count, y = ~total, type = 'scatter', mode = 'markers')
})
# Added extra as an Example for 3rd question
output$basicPlot <- renderPlot({
data_for_plot <- dbGetQuery(pool, "SELECT * FROM dummyTable WHERE uid = 2018;")
plot(x = data_for_plot$category, y = data_for_plot$performance, type = "p")
})
}
shinyApp(ui = ui, server = server)
2Для реактивности лучше извлечь таблицу в информационный кадр один раз, а затем поместить этот информационный кадр в реактивную среду.Так что вы можете избежать нескольких вызовов базы данных.Вы можете проверить приведенный выше код на то же самое.
3. Использование среды reactive
зависит только от требований, когда вы хотите иметь интерактивность с вашим блестящим приложением.Если вы хотите получить данные из других таблиц и использовать их на разных графиках, нет необходимости размещать строку подключения к базе данных в реактивной среде.Просто запросите базу данных согласно вашему требованию, как в приведенном выше коде.