在R中使用基本绘图和'manipulate'包可以很容易地绘制其参数可以通过滑块动态更新的函数。
这是一个正弦波的示例,其振幅和频率分别由参数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中还有其他方法吗?
答案 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)