以下代码是闪亮的应用程序,它可以接收任何数据,并根据您从数据中选择的变量进行统计和绘图。 我想从这个闪亮的应用程序中添加两件事:
首先,如果我首先没有选择任何变量,则默认图应为空。但是,我的默认图不为空。如何使默认图为空?
第二,当我从X轴和Y轴选择变量并将其绘制时,它可以工作,但不会显示图中的哪个点对应于特定值。我还想在图中添加变量的图例。
c1 <- rnorm(10,0,1)
c2 <- c(rep("txA",5),rep("txB",5))
c3 <- c(1:4,1:4,1:2)
c4 <- rep(LETTERS[1:5],2)
mydata <- data.frame(c1,c2,c3,c4)
library(shiny)
library(ggplot2)
ui <- fluidPage(
fileInput(inputId = "file",
label = "import file"),
sidebarLayout(
sidebarPanel(
uiOutput(outputId = "aa"),
selectizeInput("x","X:",choices = colnames(mydata)),
selectizeInput("y","Y:",choices = colnames(mydata))
),
mainPanel(
verbatimTextOutput("info"),
verbatimTextOutput("summary"),
tableOutput("tb"),
plotOutput("plot1", click = "plot_click")
)
)
)
server <- function(input,output) {
output$aa <- renderUI({
validate(need(input$file != "", ""))
mydata <- read.csv(input$file$datapath)
selectInput(inputId = "aa2",
label="choose statistics:",
choices = colnames(mydata))
})
output$tb <- renderTable({
data <- input$file
if (is.null(data))return()
read.table(data$datapath,sep=",")
})
mysubsetdata <- eventReactive(input$aa2,{
mydata[[input$aa2]]
})
output$summary <- renderPrint({
summary(mysubsetdata())
})
output$plot1 <- renderPlot({
irx <- input$x
iry <- input$y
p1 <- ggplot(data = mydata,aes_string(irx,iry)) + geom_point()
p1
})
output$info <- renderText({
paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
})
}
shinyApp(ui=ui, server=server)