Создание графиков ggvis реактивными с блестящими
У меня есть следующий сюжет, и я хочу сделать его интерактивным. Более конкретно, я бы хотел слайдер для максимального запаса в диапазоне от 60 до 120. Я прочитал всю документацию shiny и ggvis и не могу заставить ее работать. Я включил попытку ниже.
library(ggvis)
library(dplyr)
library(tidyr)
maximum_supply = input$maximum_supply
supply.function = function(supply)
60 - 60/maximum_supply * supply
data_frame(quantity = 0:maximum_supply) %>%
mutate(price = supply.function(quantity)) %>%
ggvis(~quantity, ~price) %>%
layer_lines()
Блестящий.R
library(shiny)
library(ggvis)
library(dplyr)
shinyServer(function(input, output) {
reactive({
maximum_supply = 120
supply.function = function(supply)
60 - 60/maximum_supply * supply
data_frame(quantity = 0:maximum_supply) %>%
mutate(price = supply.function(quantity)) %>%
ggvis(~quantity, ~price) %>%
layer_lines() %>%
bind_shiny("ggvis", "ggvis_ui")
})
})
Ui.R
library(shiny)
library(ggvis)
library(dplyr)
shinyUI(fluidPage(
titlePanel("Example"),
sidebarLayout(
sidebarPanel(
sliderInput("maximum_supply",
"Maximum Supply",
min = 60,
max = 120,
value = 90),
),
mainPanel(
uiOutput("ggvis_ui"),
ggvisOutput("ggvis")
)
)
))
1 ответ:
Сделать данные, которые вы передаете в
ggvis
реактивными, является ключевым здесь, так как вы хотите иметь возможность подмножества его в ответ на ввод пользователя. Кроме того,maximum_supply
является частьюinput
и может быть доступен черезinput$maximum_supply
в функции питания и реактивных данных.library(ggvis) library(shiny) library(dplyr) shinyApp( shinyUI(fluidPage( titlePanel("Example"), sidebarLayout( sidebarPanel( sliderInput("maximum_supply", "Maximum Supply", min = 60, max = 120, value = 90), uiOutput("ggvis_ui") ), mainPanel( ggvisOutput("ggvis") ) ) )), shinyServer(function(input, output) { supply.function <- function(supply) { 60 - 60/input$maximum_supply* supply } dat <- reactive({ data.frame( quantity = 0:input$maximum_supply ) }) dat %>% mutate(price = supply.function(quantity)) %>% ggvis(~quantity, ~price) %>% layer_lines() %>% bind_shiny("ggvis", "ggvis_ui") }) )