2017-12-27 7 views
0

シリコンバレーの労働者の数字(列count)とraceの間に依存関係があるはずのShinyアプリケーションがあります。私が望むのは、左側のgenderを選択すると、図のjob categorycompanyは、別のracesの労働者のcountと表示されます。今私のダイアグラムは0から1までのカウントの範囲しか持たず、正しいダイアグラムを示していません。ここでgeom_barの範囲を変更するには

は私のコードです:

library(shiny) 
library(ggplot2) 
library(dplyr) 

bcl <- read.csv(file = "E:/country/data/reveal.csv", colClasses = c("character", "integer", "factor", "factor", "factor", "integer"), na.strings = c("na", "NA")) %>% na.omit() 

ui <- fluidPage(
titlePanel("Silicon Valley Diversity Data"), 
sidebarLayout(
    sidebarPanel(
    img(src = "silicon.png", height = 150, width = 250),br(), 
    em("Choose company, job category and gender"),br(), 
    radioButtons("genderInput", "gender", 
         choices = list("male" = "male", 
             "female" = "female"), 
          selected = "male"), 
    radioButtons("jobInput","Job category", 
        choices = c(
        "First/Mid officials & Mgrs", 
        "Professionals", 
        "Administrative support", 
        "Sales workers" 
       ), 
        selected = "Technicians" 
       ), 
       selectInput("companyInput", "company", 
          choices = c("Adobe", "Cisco", "Facebook", "Google", "HP", "Intel", "Twitter")) 
      ), 
       mainPanel(plotOutput("coolplot"), 
         br(), br(), 
         tableOutput("results")) 
      )) 

server <- function(input, output) { 
output$coolplot <- renderPlot({ 
filtered <- 
    bcl %>% 
    filter(
    gender == input$genderInput, 
    job_category == input$jobInput, 
    company == input$companyInput 
) 
ggplot(filtered, aes(race)) + 
    geom_bar(fill = "#9f3e74") 
}) 
} 

shinyApp(ui = ui, server = server) 
ここ

は私のアプリです:

enter image description here

+0

「カウント」列とは何ですか? – jsb

+0

データセットには6つの列があります – Viola

+0

ええ、 'count'列の意味は何ですか? – jsb

答えて

0

はこれを試してみてください:要するに

library(shiny) 
library(ggplot2) 
library(dplyr) 

# Load the data 
df <- read.csv(file = "reveal.csv", 
    colClasses = c("character", "integer", "factor", "factor", "factor", "integer"), 
    na.strings = c("na", "NA")) 

# Clean the data 
bcl <- df %>% 
    na.omit() %>% 
    select(-year) %>% 
    filter(count != 0) %>% 
    filter(job_category != "Totals", 
     job_category != "Previous_totals", 
     race != "Overall_totals", 
     race != "Two_or_more_races") 

ui <- fluidPage(
    titlePanel("Silicon Valley Diversity Data"), 
    sidebarLayout(
    sidebarPanel(
     img(
     src = "silicon.png", 
     height = 150, 
     width = 250 
    ), 
     br(), 
     em("Choose company, job category and gender"), 
     br(), 
     radioButtons(
     "genderInput", 
     "gender", 
     choices = list("male" = "male", 
         "female" = "female"), 
     selected = "male" 
    ), 
     selectInput(
     "jobInput", 
     "Job category", 
     choices = unique(bcl$job_category) # get choices programmatically 
    ), 
     selectInput(
     "companyInput", 
     "company", 
     choices = unique(bcl$company) # get choices programmatically 
    ) 
    ), 
    mainPanel(plotOutput("coolplot"), 
       br(), br(), 
       tableOutput("results")) 
) 
) 

server <- function(input, output) { 

    output$coolplot <- renderPlot({ 

    filtered <- filter(
     bcl, 
     company == input$companyInput, 
     gender == input$genderInput, 
     job_category == input$jobInput) 

    df <- filtered[rep(row.names(filtered), filtered$count), 1:4] # prepare data for plotting 

    ggplot(df, aes(race)) + geom_bar() + coord_flip() 

    }) 
} 

shinyApp(ui = ui, server = server) 

を、解決策はいくつかのより多くのクリーニングをして関与しましたフィルタリングが012で実行された後のいくつかの最終的な操作。私はまた、uiのいくつかの変更を行う自由を取った。気に入ってくれるといいな。

関連する問題