plot.CA()在本地呈现闪亮的应用程序,但在部署应用程序时则不会

时间:2018-04-11 14:02:42

标签: image shiny rendering

我创建了一个Shiny应用程序,它接受用户输入并创建CA图。当我在本地运行应用程序时,它工作正常,但由于某些原因,当我部署仪表板时,图表的图像将不会出现。我可以在日志中看到数据上传和重新格式化为正确的数据框工作正常,但是图表本身无法呈现。

有谁知道为什么会这样?我在下面发布了我的代码(你会在我的代码中看到一些用于调试的print()行)。任何帮助将不胜感激!

    #PERCEPTUAL MAPPING DASHBOARD

library(FactoMineR)
library(factoextra)
library(SensoMineR)
library(shinythemes)
library(ca)



ui <- fluidPage(theme = shinytheme("darkly"),
  # Application title
  titlePanel("Perceptual Map Dashboard"),
  sidebarLayout(
    # Sidebar with a slider and selection inputs
    sidebarPanel(

      #Excel doc row and column names
      numericInput(inputId="startcol",label="Input start column of CSV file:",value="", min=1,max=10000),
      numericInput(inputId="endcol",label="Input end column of CSV file:",value="", min=1,max=10000),
      #Inputing brands and emotions
      br(),
      numericInput(inputId = "rownums",label = "How many emotions/characteristics are you evaluating?",value = "", min = 1,max = 10000),
      br(),
      h6("Note: Please enter brands and emotions/characteristics in the order that they appear in the excel document exported from Survey Gizmo."),
      textInput ( 'brands', 'List the brands included in your perceptual map (separated by commas):', value=""),
      textInput ( 'emotions', 'List the emotions/characteristics included in your perceptual map (separated by commas):', value=""),
      #Removing brands and emotions

      #Select graph type
      textInput(inputId="plottitle",label="Title your graph:"),
      #Upload Excel Grid
      fileInput(inputId = 'data', 'Upload CSV File',
                accept=c('.csv')),
      actionButton("go","Create Map")
    ),

    # Visual Output
    mainPanel(
      wellPanel(h4('Visual'),
                h5("Once your visual appears, just right click it to save it as a .png file.")),
      plotOutput(outputId = "plot",  width = "100%", height=500)
      # downloadButton("downloadPlot", "Download Visual")
    )
  )
)



server <- function(input,output){



  K <- eventReactive(input$go,{


      x <- read.csv(input$data$datapath, header = F)

      x[!is.na(x)] <- 1
      x[is.na(x)] <- 0
      x<-x[,as.numeric(input$startcol):as.numeric(input$endcol)]
      column.sums<-colSums(x)
      print(column.sums)
      pmd.matrix<-matrix(column.sums, byrow = T, nrow=as.numeric(input$rownums))
      pmd.df2<-as.data.frame(pmd.matrix)
      colnames(pmd.df2) = unlist(strsplit(as.character(input$brands),","))
      print(pmd.df2)
      row.names(pmd.df2)= unlist(strsplit(as.character(input$emotions),","))
      print(pmd.df2)
      pmd.df2[-nrow(pmd.df2),] 
      print(pmd.df2)
      fit <- CA(pmd.df2, graph=F)
      return(fit)


    })

  p <- eventReactive(input$go,{

      input$plottitle

  })

  output$plot<- renderPlot({

      plot.CA(K(), col.row = "blue", col.col="black",  cex=1, new.plot=T,
                    title=p())


  })

}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

我建议您检查此问题是否特定于您的情节,或者plot.CA是否与闪亮一般无效。尝试&#34;部署&#34; (显然,你不使用网络服务器?)以下应用

library(FactoMineR)
library(shiny)

data(children)
res.ca <- CA(children, col.sup = 6:8, row.sup = 15:18)

shinyApp(
  fluidPage(plotOutput("plot")),
  function(input, output, sesison) {
    output$plot <- renderPlot({
      plot.CA(res.ca)
    })
  }
)

如果这确实有效,那么您的模型可能存在问题,或者ca包与FactorMineR包之间可能存在名称共谋。

如果这不起作用,请尝试以下方法

## use same data/libraries as above

myfile <- tempfile(fileext = ".png")

shinyApp(
  fluidPage(imageOutput("plot")),
  function(input, output, sesison) {
    output$plot <- renderImage({
      png(file = myfile)
      plot.CA(res.ca)
      dev.off()
      list(src = myfile)
    }, deleteFile = FALSE)
  }
)

  1. 该应用程序现在是否正常工作
  2. 是否创建myfile并包含合理的内容。