facet_wrap在闪亮的应用程序中

时间:2016-02-21 02:44:00

标签: r csv ggplot2 shiny

我是shiny的新手。我想制作一个shiny应用,让用户上传csv文件,然后绘制数据。

您可以下载the data from here

我按如下所示

library(shiny)
library(ggplot2)
#ui.R
ui <- fluidPage(
  titlePanel("My shiny app"), sidebarLayout(
sidebarPanel(
  helpText("Blah blah blah"),
  a("Data to be plotted", href="https://www.dropbox.com/s/t3q2eayogbe0bgl/shiny_data.csv?dl=0"),
  tags$hr(),
  fileInput("file","Upload the file"), 
  h5(helpText("Select the read.table parameters below")),
  checkboxInput(inputId = 'header', label = 'Header', value = TRUE),
  checkboxInput(inputId = "stringAsFactors", "stringAsFactors", FALSE),
  br(),
  radioButtons(inputId = 'sep', label = 'Separator', choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',')
),
mainPanel(
  uiOutput("tb"),
  plotOutput("line")             
)
)
)

#server.R
server <- function(input,output){
data <- reactive({


file1 <- input$file
if(is.null(file1)){return()} 

read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)})

output$filedf <- renderTable({
if(is.null(data())){return ()}
input$file
}) 

output$sum <- renderTable({
if(is.null(data())){return ()}
summary(data())
})

output$table <- renderTable({
if(is.null(data())){return ()}
data()
})

output$line <- renderPlot({
if (is.null(data())) { return() }
print(ggplot(data(), aes(x=date, y=aa)) + geom_line()+ facet_wrap(~station)) })

output$tb <- renderUI({if(is.null(data()))
h5()               
else
  tabsetPanel(tabPanel("About file", tableOutput("filedf")),tabPanel("Data", tableOutput("table")),tabPanel("Summary", tableOutput("sum")))
})
}


shinyApp(ui = ui, server = server)

该应用程序部分工作。我可以上传一个csv文件,但当我使用facet_wrap时,情节显示为空。任何建议如何在上传三个站的数据后获得情节将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以在renderPlot()表达式中设置日期。这是你想要的吗?

output$line <- renderPlot({
if (is.null(data())) { return() }

df <- data()
df$date <- as.Date(df$date, format="%d/%m/%Y") 

print(ggplot(data=df, aes(x=date, y=aa)) + geom_line()+ facet_wrap(~station)) })