Я пытаюсь построить график, который будет меняться в зависимости от выбранных входов. Кроме того, данные на графике должны быть классифицированы по состоянию. Набор данных, который я использую: midwest
от ggplot2
. По какой-то причине цвет, который должен основываться на состоянии из набора данных midwest
, не работает. Я получаю сообщение об ошибке при попытке использовать color = state
или color = prof_poverty$state
. Aesthetics must be either length 1 or the same as the data (1): colour
. Должно быть 5 разных цветов, так как есть 5 разных состояний.
Это мой код:
интерфейс
library(shiny)
library(dplyr)
library(ggplot2)
prof_poverty <- midwest %>%
select(state, county, percprof, percadultpoverty, percpovertyknown, percbelowpoverty, percadultpoverty, percelderlypoverty, percchildbelowpovert)
ui <- fluidPage(
pageWithSidebar(
headerPanel('Poverty compared with number of professors'),
sidebarPanel(
selectInput('xcol', 'X variable', names(prof_poverty)[3:8]),
selectInput('ycol', 'Y variable', names(prof_poverty)[3:8]),
selected = names(prof_poverty)[[2]]
),
mainPanel(
plotOutput('poverty')
)
)
)
SERVER
# Define server that renders a map and a table
server <- function(input, output){
# Combine the selected variables into a new data frame
selectedData <- reactive({
prof_poverty[input$xcol, input$ycol]
})
output$poverty <- renderPlot ({
ggplot(data = selectedData(), aes(x = input$xcol, y = input$ycol)) +
geom_point(aes(color = prof_poverty$state)) })
}
# sRun the application
shinyApp(ui = ui, server = server)