我想要一个简单的应用程序,该应用程序在读取csv文件后会生成绘图,为此,我正在关注文档,但是我对如何将新文件与绘图连接感到迷惑。我现在的预期输出是这样的:
这是我用来绘制情节的代码:
output$plot1 <- renderPlot({
ggplot(df, aes(x=LotArea, y=SalePrice)) + geom_point()
})
output$info <- renderPrint({
brushedPoints(df, input$LotArea, allRows = TRUE)
})
但是现在我只是在应用程序的开头读取文件。
df = read.csv("data/house_prices.csv")
df = select(df, "SalePrice","LotArea")
到目前为止,我还没有找到如何将此图连接到上载的文件,因此,每次上传文件时,我都应该有一个不同的图。 :
column(3,
fileInput("file1", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
))
这是完整的代码:
library(shiny)
library(dplyr)
df = read.csv("data/house_prices.csv")
df = select(df, "SalePrice","LotArea")
ui <- fluidPage(
fluidRow(
column(3,
fileInput("file1", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
)),
column(6,
plotOutput("plot1", click = "plot_brush")
),
mainPanel(
tableOutput("contents")
)
)
)
server <- function(input, output) {
options(width = 100) # Increase text width for printing table
output$plot1 <- renderPlot({
ggplot(df, aes(x=LotArea, y=SalePrice)) + geom_point()
})
output$info <- renderPrint({
brushedPoints(df, input$LotArea, allRows = TRUE)
})
output$contents <- renderTable({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
read.csv(inFile$datapath)
})
}
shinyApp(ui, server)