2013-07-14 25 views
5

Reaktif uygulaması hakkında genel bir sorum var. (selectInput) ve bu kimliğe dayanarak karşılık gelen bir arsa yapmayı umuyorum. Diğer bir deyişle, seçilen değişken çizim fonksiyonunda bir argüman olarak geçecektir ve her farklı bir ID seçtiğimde çizim de değiştirilir. Bunun parlak bir şekilde yapılıp yapılmadığını biliyor muyum? Herhangi bir benzer problem üzerinde çalışan bir örnek sağlayabilirse memnun olurum. Teşekkür ederim!açılan listeden bir değişken seçin ve Rive

+0

Bu parlak ile kesinlikle mümkündür. Nasıl olduğunu görmek için http://rstudio.github.io/shiny/tutorial/#welcome adresini okuyun –

cevap

13

Örnek olarak, argüman olarak açılır menüden oluşan örnek bir çalışma örneği. Bu programın çıktısı http://glimmer.rstudio.com/bishwamitrad/ggplot2browser/ izlenebilir:

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) 

}) 


})