R:在绘图中具有滑块的功能的交互式图形

时间:2018-11-07 23:52:00

标签: r graph parameters slider r-plotly

在R中使用基本绘图和'manipulate'包可以很容易地绘制其参数可以通过滑块动态更新的函数。
这是一个正弦波的示例,其振幅和频率分别由参数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在其站点上提供examples of sliders,但是对于如此简单的任务,代码似乎过于复杂。如果plotly没有为此类任务提供一两个衬板,那么在R中还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

这是一个快速且肮脏的闪亮应用程序,它基于文档中的示例之一执行此操作,并且可以从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