У меня проблемы с фильтрацией данных для визуализации ggplot2. Я хочу использовать фильтр и ввести значение f, например, используя
data %>%
filter(Col == Number)
ggplot()
, чтобы получить настраиваемый график в соответствии с наборами данных
Я использовал этот код для создания блестящего приложения, которое позволит пользователюзагрузить данные и может в интерактивном режиме построить их, но фильтр не работает.
:
library(shiny)
library(tidyverse)
ui <- shinyUI(
fluidPage(
h1(' output'),
h2('Graphics'),
sidebarLayout(
sidebarPanel(
fileInput(inputId = 'file1', label = 'Upload your Data:', accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
tags$hr(),
selectInput('xcol', "X variable:", "", selected = ""),
selectInput('ycol', 'Y variable:', "", selected = ""),
selectInput('filter1', 'Filter:', "", selected = "", multiple = TRUE),
selectInput('filter2', 'Filter Value',"",selected = "")
),
mainPanel(
plotOutput("plot")
)
)
)
)
server <- shinyServer(function(session, input, output){
data <- reactive({
req(input$file1)
inFile <- input$file1
df <- read_csv(inFile$datapath)#, header = T, sep=",")
updateSelectInput(session, inputId = 'xcol', label = 'X variable:',
choices = names(df), selected = names(df))
updateSelectInput(session, inputId = 'ycol', label = 'Y variable:',
choices = names(df), selected = names(df))
updateSelectInput(session, inputId = 'filter1', label = 'Filter:',
choices = names(df), selected ="")
observe({
updateSelectInput(session, inputId = 'filter2', label = 'Filter value', choices =c(0:10))
})
return(df)
})
output$plot <- renderPlot({
F1 <- input$filter1
F2 <- input$filter2
data() %>% filter(F1==F2)%>%
ggplot(aes(x =data()[input$xcol],y= data()[input$ycol]))+
geom_point()
})
})
shinyApp(ui = ui, server = server)
Большое вам спасибо