【问题标题】:R: An interactive graph of a function with sliders in plotlyR:带有滑块的函数的交互式图形
【发布时间】:2019-04-11 11:36:37
【问题描述】:

使用基本绘图和“操纵”包在 R 中很容易通过滑块动态更新其参数来绘制函数。
这是一个正弦波示例,其幅度和频率分别由参数 A 和 k 控制。

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

然而,基本情节并不像情节一样漂亮。有没有一种简单的方法可以在情节中做到这一点?

Plotly 在其网站上提供了examples of sliders,但对于如此简单的任务而言,代码似乎过于复杂。如果 plotly 没有为此类任务提供一两个班轮,那么在 R 中是否有其他方法可以做到这一点?

【问题讨论】:

  • shiny包。

标签: r graph parameters slider r-plotly


【解决方案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)

【讨论】:

  • 您的代码比 plotly 的代码更简单,尽管我怀疑它也可以简化。另外,我想不需要行数据
  • 是的,非常快而且非常脏@irakli。只需复制示例代码并将其调整为有问题的功能。大约 4 分钟的工作,还有很多不足之处。
猜你喜欢
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多