Я пытаюсь создать свое первое блестящее приложение, которое позволяет пользователям исследовать различные типы нарушений парковки в Копенгагене. Но у меня возникают трудности Подменят данные, которые будут plottet на основе пользовательского ввода - в основном я пытаюсь создать интерактивную версию сюжета ниже, где пользователь может выбрать TYPE_1, type_2 и т.д.Подмножество данных в Shiny для создания интерактивного ggplot barchart
#example data
df <- data.frame(c('a', 'b', 'c', 'd', 'e', 'f', 'g'), c(rep_len(55, 5), 0, 44),c(rep_len(12, 5), 6, 6), c(0, 2, 0, 3, 0, 7, 8), c(0, 0, 4, 0, 8, 5, 3), c(5, 0, 6, 0, 11,12, 9))
names(df) <- c("street", "type_1", "type_2", "type_3", "type_4", "type_5")
#Example of static plot that i'm trying to make interactive
ggplot(subset(df, type_5 > 5))+geom_bar(aes(x=reorder(street,type_5), y=type_5),stat = "identity")+coord_flip()+xlab("Streetname")
My ui.R и server.R следующие. Мои исходные данные имеет более 2000 названия улиц, поэтому я пытаюсь подмножество данных для включения только нарушения стоянки type_x> некоторые Treshold
# Define the overall UI
ui <- shinyUI(
# Use a fluid Bootstrap layout
fluidPage(
# Give the page a title
titlePanel("Parking violations"),
# Generate a row with a sidebar
sidebarLayout(
# Define the sidebar with one input
sidebarPanel(
selectInput("type", "Type of violation:",
choices=colnames(df), selected = "type_1"),
hr(),
helpText("Data from Parking Copenhagen")
),
# Create a spot for the barplot
mainPanel(
plotOutput("pplot")
)
)
)
)
# Define a server for the Shiny app
server <- shinyServer(function(input, output) {
#Subset the data based on user input
p.df <- reactive({
subset(df, input$type > 5)
})
# Fill in the spot we created for a plot
output$pplot <- renderPlot({
pdat.df <- p.df()
# Render a barplot
p <- ggplot(pdat.df, aes(x=pdat.df$street, y=input$type)) + geom_bar(stat = "identity")+coord_flip()
print(p)
})
})
shinyApp(ui=ui, server = server)
Результат ниже это не совсем то, что я искал. Я попробовал варианты, предложенные здесь shiny not displaying my ggplot as I'd expect., но не повезло с подмножеством в пределах ggplot()
(как в моем статическом примере) или geom_bar()
Любые предложения приветствуются. Благодаря!
Я не могу проверить свой код, но, возможно, это связано с «вход $ Тип> 5» и "choice = colnames (df), selected =" type_1 "" является type_1 фактором? потому что вы фильтруете число. – MLavoie
type_1-5 является числовым, поэтому я предполагаю, что это не проблема? –
или, может быть, в вас реактивное() выражение df <- subset (df, input $ type> 5); df – MLavoie