如何更改 geom_bar 上的范围
How to change range on the geom_bar
我有一个闪亮的应用程序,它应该显示硅谷工人的数量(第 count
列)和 race
之间的依赖关系。我希望当我在左侧选择 gender
、job category
和 company
时,图表上将显示 count
个具有不同 races
的工人。现在我的图表的计数范围仅为 0 到 1,显示的图表不正确。
这是我的代码:
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)
这是我的应用程序:
试试这个:
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)
总而言之,解决方案涉及对数据进行更多清理,以及在 server
中执行过滤后进行一些最终操作。我还冒昧地对 ui
进行了一些更改。我希望你喜欢它。
我有一个闪亮的应用程序,它应该显示硅谷工人的数量(第 count
列)和 race
之间的依赖关系。我希望当我在左侧选择 gender
、job category
和 company
时,图表上将显示 count
个具有不同 races
的工人。现在我的图表的计数范围仅为 0 到 1,显示的图表不正确。
这是我的代码:
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)
这是我的应用程序:
试试这个:
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)
总而言之,解决方案涉及对数据进行更多清理,以及在 server
中执行过滤后进行一些最终操作。我还冒昧地对 ui
进行了一些更改。我希望你喜欢它。