添加元素以动态绘制闪亮

时间:2018-03-25 23:03:19

标签: r shiny

我构建了一个闪亮的应用程序,允许用户输入双变量数据,并通过一系列点击产生散点图,然后将相关系数作为文本添加到图中,最后将回归线与其等式相加。

我试图在应用程序中模拟该过程,该应用程序首先生成带有单击的“随机”散点图。不知何故,随机生成的双变量数据正在影响绘图过程,因为x和y值似乎不会持续产生后续的图。这些值存在于某处,因为相关性和回归方程是根据需要在第二次和第三次点击时产生的。该应用程序使用一些源代码来调用函数来生成随机双变量数据,绘制图表并生成回归系数。我没有把它包括在下面因为我已经单独运行它并且它工作正常。无论如何,这是我的代码:

ui.R

    library(shiny)
    source('binorm.R')

    ui<-fluidPage(
    withMathJax(),
    tags$style(type = "text/css",
         "h1 {color: blue; font-weight: bold; font-size: 24px;}",
         "h4 {color: blue; font-weight: bold; font-size: 18px;}",
         "body {background-color: gold;}",
         "label {font-size: 16px; color: blue;
               font-weight: bold;}"
          ),
    tags$head(tags$style(HTML(
        "#r {font-size: 15px; color: red; font-weight: bold;}"))),
    tags$head(tags$style(HTML(
        "#reg {font-size: 15px;color: red; font-weight: bold;}"))),
    tags$h1('Guess the Correlation Coefficient, r'),
    fluidRow(

    column(9,
    plotOutput('plot', height="600px", width='100%')),

    column(3,
    hr(),
    h4("Generate a 'Random' Scatterplot"),
    actionButton(inputId='go1', label='Get New Scatterplot',
     style="color: blue; font-size: 16px; font-weight: bold; 
               background-color: white;"),

   hr(),


   h4('Reveal Correlation'),
   actionButton(inputId='go2', label='Show r',
     style="color: blue; font-size: 16px; font-weight: bold; 
               background-color: white;"),

   hr(),

   verbatimTextOutput('r'),

   h4('Show the Regression Line, y on x'),
   actionButton(inputId='go3', label='Show Regression Equation',
     style="color: blue; font-size: 16px; font-weight: bold; 
               background-color: white;"),
   hr(),
   verbatimTextOutput('reg')
         )
      )
    )

server.R

server<-function(input, output){

        v<-reactiveValues(M=rbivariate(rpar(200)), r=FALSE, reg=FALSE)
        observeEvent(input$go1, {v$r<-FALSE})
        observeEvent(input$go1, {v$reg<-FALSE})
        observeEvent(input$go1, {v$M<-rbivariate(rpar(200))})
        observeEvent(input$go2, {v$r<-TRUE})
        observeEvent(input$go3, {v$reg<-TRUE})
        output$plot<-renderUI({
                   if (v$r==FALSE){
                         S1plot(v$M[,1], v$M[,2])}
                   else if (v$r==TRUE & v$reg==FALSE){
                         Rplot(v$M[,1], v$M[,2])}
                   else if (v$r==TRUE & v$reg==TRUE){
                         L1plot(v$M[,1], v$M[,2])}
                                })         
        output$r<-renderPrint({
                   if(v$r==TRUE){print(cex=2,paste0(
                            'r= ',
                             rcfs(v$M[,1], v$M[,2])[3]))}
                   else {print('What is r?')}
                             })
         output$reg<-renderPrint({
                   if(v$reg==TRUE){print(cex=2,paste0(
                            'y=(',
                             rcfs(v$M[,1],v$M[,2])[1],')x+(',
                             rcfs(v$M[,1],v$M[,2])[2],')'))
                             }
                   else {print('Regression Equation?')}
                             })                                                            
                            }

0 个答案:

没有答案