2017-08-22 5 views
0

Ich möchte ein Diagramm (für eine Shiny-App) basierend auf Daten anzeigen, die von einem Benutzer über eine Datei eingegeben wurden. Beim aktuellen Setup gibt es eine Fehlermeldung, die besagt, dass die Daten nicht gefunden wurden. Daher wird das Plot (aus dem rCharts-Paket) nicht angezeigt.Anzeige R Shiny Plot nach Eingabe der Datei

-Code unten angehängt:

ui.R

library(rCharts) 
library(shinydashboard) 
library(shiny) 
dashboardPage(
    skin = "black", 
    header <- dashboardHeader(
    titleWidth = 475 
), 
    sidebar <- dashboardSidebar(
    sidebarMenu(
    )  
), 
    body <- dashboardBody(
    tabItems(
     tabItem("setup", 
       box(width = 4,title = tags$b('Input Dataset'), solidHeader = T, status = 'primary', collapsible = T, 
        helpText("Default max. file size is 5 MB. Please upload both files for analysis in csv format."), 
        fileInput("file1","Upload the first file"), 
        fileInput("file2","Upload the second file") 
      ),     
       box(height = 500, width = 12,title = tags$b('Visualize Data'), solidHeader = T, status = 'primary', 
        showOutput("myPlot", "Highcharts")     
      ) 
    ) 
    ) 
) 
) 

server.R

library(shiny) 
library(rCharts) 
# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 
    observe({ 
    file1 = input$file1 
    file2 = input$file2 
    if (is.null(file1) || is.null(file2)) { 
     return(NULL) 
    } 
    data1 = read.csv(file1$datapath) 
    data2 = read.csv(file2$datapath) 
    }) 
    output$myPlot<-renderChart2({ 
    # Prepare data 

    data1[,2] <- (data1[,2])/sum(data1[,2]) 

    # Create chart 
    a <- rCharts:::Highcharts$new() 
    a$chart(type = "column") 
    a$xAxis(categories = rownames(x)) 
    a$yAxis(title = list(text = "Normalized Intensity")) 
    a$data(data1) 
    a$set(width = 600, height = 500) 
    return(a) 
    }) 
}) 

Antwort

0

Versuche so etwas wie diese hinzufügen. Stellen Sie sicher, dass Sie auf nrow überprüfen und zurückgeben und Highcharts$new() Objekt als renderChart2 eins erwartet.

library(shiny) 
library(rCharts) 
# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 

    data1 <- reactive({read.csv(file1$datapath)}) 
    data2 <- reactive({read.csv(file2$datapath)}) 

    output$myPlot<-renderChart2({ 
    data1 <- data1() 
    # Prepare data 
    if(nrow(data1==0)){return(Highcharts$new())} 
    data1[,2] <- (data1[,2])/sum(data1[,2]) 

    # Create chart 
    a <- rCharts:::Highcharts$new() 
    a$chart(type = "column") 
    a$xAxis(categories = rownames(x)) 
    a$yAxis(title = list(text = "Normalized Intensity")) 
    a$data(data1) 
    a$set(width = 600, height = 500) 
    return(a) 
    }) 
}) 
+0

Auch mit dieser Änderung bekomme ich immer noch "object 'file1' nicht gefunden." Habe ich etwas verpasst? – user2657817

Verwandte Themen