【发布时间】:2021-08-14 06:48:43
【问题描述】:
我正在使用多文件设置,因此我同时拥有 ui.r 和 server.r 文件。我正在使用下面的数据集(小样本),它查看了 2016 年美国/加拿大不同州/省的 UFO 目击事件。
Date Time AM.PM Country City State Shape
1 12/21/2016 7:15:00 PM USA Waynesboro VA Sphere
2 12/21/2016 12:00:00 AM USA Louisville KY Unknown
3 12/20/2016 10:30:00 PM USA Santa Rosa CA Sphere
4 12/20/2016 7:00:00 PM USA Fresno CA Circle
5 12/19/2016 9:53:00 PM USA Reymert AZ Circle
6 1/11/2016 8:15:00 PM CANADA Mississauga ON Circle
到目前为止,在我的应用程序中,我创建了一个主面板,它显示一个条形图,其中包含在 x 轴上的“形状”列中观察到的所有不同形状以及在 y 轴上观察到的数量。我在侧面有一个小部件,允许用户选择是否要查看美国或加拿大的数据,并且绘图会相应更改。我现在要做的是使用 checkboxGroupInput 来允许用户过滤掉他们想在绘图的 x 轴上看到的形状。我在我的 UI 文件中使用所有可能的形状编写了该函数,如下所示。现在我被困在如何制作它,以便在应用程序首次启动时选择所有框(没有再次列出所有可能性)。最重要的是,我不确定如何将此功能添加到服务器文件中,以便它会根据用户想要过滤的形状自动更新绘图。感谢您的帮助,谢谢!
用户界面文件:
library(shiny)
library(ggplot2)
library(dplyr)
shinyUI(fluidPage(
# Application title
titlePanel("Exploring UFO Sightings"),
sidebarLayout(
sidebarPanel(
selectInput("Country",
"Country to Display:",
choices = list("USA" = 'USA',
"Canada" = 'CANADA'),
),
checkboxGroupInput("type",
"Select Desired Shapes Observed:",
choices = list("Changing" = 'Changing',
"Chevron" = 'Chevron',
"Cigar" = 'Cigar',
"Circle" = 'Circle',
"Cone" = 'Cone',
"Cross" = 'Cross',
"Cylinder" = 'Cylinder',
"Diamond" = 'Diamond',
"Disk" = 'Disk',
"Egg" = 'Egg',
"Fireball" = 'Fireball',
"Flash" = 'Flash',
"Formation" = 'Formation',
"Light" = 'Light',
"Other" = 'Other',
"Oval" = 'Oval',
"Rectangle" = 'Rectangle',
"Sphere" = 'Sphere',
"Teardrop" = 'Teardrop',
"Triangle" = 'Triangle',
"Unknown" = 'Unknown'),
selected = c(#Not sure how to select all)
),
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("ufoPlot")
)
)
))
服务器文件:
library(shiny)
library(ggplot2)
library(dplyr)
shinyServer(function(input, output) {
output$ufoPlot <- renderPlot({
ufo_data_filter <- filter(ufo_data, Country == input$Country)
ggplot(data = ufo_data_filter) +
geom_bar(mapping = aes(x = Shape))+
labs(
title = "Number of Different Shaped UFO Observations",
x = "Shape of UFO Sighted",
y = "Number of Observations in 2016"
)
})
})
【问题讨论】: