R: Интерактивный график функции с ползунками в сюжете - PullRequest
0 голосов
/ 08 ноября 2018

Построить функцию с динамическим обновлением ее параметров с помощью ползунков в R очень просто, используя базовый график и пакет манипулирования.
Вот пример синусоидальной волны с ее амплитудой и частотой, управляемой параметрами A и k соответственно.

library(manipulate)
manipulate(plot(x, A*sin(k*x)), A = slider(1,3), k = slider(1,10))

Interactive graph of sine wate Тем не менее, основной сюжет не такой уж сюжетный. Есть ли простой способ сделать это по сюжету?

Plotly предоставляет примеры слайдеров на своем сайте, но код кажется слишком сложным для такой простой задачи. Если plotly не предоставляет один или два вкладыша для таких задач, есть ли другие способы сделать это в R?

1 Ответ

0 голосов
/ 08 ноября 2018

Вот быстрое и грязное блестящее приложение, которое делает это на основе одного из примеров в документации и хорошо работает с RStudio. Много возможностей для очистки кода, особенно в renderPlot, но это даст вам отправную точку.

library(shiny)
library(shinydashboard)
library(ggplot2)

data <-  data.frame(x=c(1,2,3,4),y=c(10,11,12,13))
ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(sliderInput("sliderA","A", min=1, max=3, step=0.5, value=1),
               sliderInput("sliderK","K", min=1, max=10, step=1, value=1)),
  dashboardBody(
    fluidRow(column(6,plotOutput('waveplot')))
  ))

server <- function(input, output, session) { 
  output$waveplot <- renderPlot({
    x <- seq(0,10,0.1)
    yfxn <- function(x) { input$sliderA*sin(input$sliderK*x) }
    y <- yfxn(x)
    df <- data.frame(x,y)
    ggplot(df,aes_string(x=x,y=y))+geom_point(size=2)+geom_line()+ 
         scale_x_continuous()
  })
}

shinyApp(ui, server)

enter image description here

...