Select a variable from the drop-down list and pass it as an argument to reactivePlot in R Shiny

I have a general question about the R Shiny application: I have a list of identifiers that end users can select from the drop-down menu ( selectInput ), and I hope to make an appropriate graph based on this identifier. In other words, the selected variable will be passed as an argument to the function plotting, and every time I select a different identifier, the schedule also changes. Can I find out if this can be done in Brilliant? I appreciate if anyone can provide a working example on similar issues. Thanks!

+6
source share
1 answer

Here is an example working example with a drop-down list as an argument. The output of this program can be viewed at http://glimmer.rstudio.com/bishwamitrad/ggplot2browser/ :

ui.R

 library(shiny) library(ggplot2) ## Define UI for miles per gallon application dataset <- diamonds title <- "Diamonds data Analysis" ## Define UI for application that plots random distributions shinyUI(pageWithSidebar( ## Application title headerPanel(title), ## Sidebar with a slider input for number of observations sidebarPanel ( sliderInput('sampleSize','Sample Size', min=1, max=nrow(dataset), value=min(1000,nrow(dataset)), step=500, round=0), selectInput('x','X',names(dataset)), selectInput('y','Y',names(dataset), names(dataset)[[2]]), selectInput('color','Color',c('None',names(dataset))), selectInput('shape','Shape',c('None',names(dataset))), checkboxInput('jitter','Jitter'), checkboxInput('smooth','Smooth'), selectInput('facet_col','Facet Column', c(None='.',names(dataset))), selectInput('facet_row','Facet Row', c(None='.',names(dataset))) ), ## Show a plot of the generated distribution mainPanel(plotOutput('plot',height="700px")) ) ) 

server.R

 library(shiny) library(ggplot2) ## Define server logic required to generate and plot a random distribution shinyServer(function(input,output) { dataset <- reactive(function(){ diamonds[sample(nrow(diamonds),input$sampleSize),] }) output$plot <- renderPlot(function(){ p <- ggplot(dataset(),aes_string(x=input$x, y=input$y))+geom_point() if(input$color != 'None') p <- p + aes_string(color=input$color) if (input$shape != 'None') p <- p + aes_string(shape=input$shape) facets <- paste(input$facet_row, '~', input$facet_col) if (facets != '. ~ .') p <- p + facet_grid(facets) if (input$jitter) p <- p + geom_jitter() if (input$smooth) p <- p + geom_smooth() print(p) }) }) 
+13
source

Source: https://habr.com/ru/post/949388/


All Articles