如何解决使用日期范围闪亮的更新图
我正在尝试设置一个日期范围过滤器,该过滤器将更新我的图表,但是无论我如何尝试,我似乎都会出错。基本上,我希望能够设置日期范围,以便人们可以查看特定选举之间的变化。
我正在使用内华达州国务卿韦斯比特的数据进行选民登记。我已经抓取了数据并将其存储在CSV中,如果我能确定该怎么做,我很乐意将其附加在此处。 https://www.nvsos.gov/sos/elections/voters/voter-registration-statistics。
通常我会分解一下代码,但是我将所有代码都包含在内,以防万一我在看不见的其他地方出错。
library(tidyverse)
library(shinydashboard)
library(shinyWidgets)
library(tidyverse)
library(scales)
library(plotly)
#### Load Data-----------------------------------------------------------------
nv_data <- read_csv("Data/NV_Data_Clean.csv")
nv_data <- nv_data %>%
mutate(Date = lubridate::mdy(Date),Party = factor(Party,levels = c("Total","Democrat","Republican","Nonpartisan","Other")))%>%
mutate(District = factor(District))
### separate out data by the district types ------------------------------------
county <- nv_data %>%
filter(`District Type` == "County")
assembly <- nv_data %>%
filter(`District Type` == "Assembly")
senate <- nv_data %>%
filter(`District Type` == "Senate")
ageparty <- nv_data %>%
filter(`District Type` == "Age and Party")
### Create function for the date range -----------------------------------------
monthStart <- function(x) {
x <- as.POSIXlt(x)
x$mday <- 1
as.Date(x)
}
### build the components of the UI --------------------------------------------
sidebar <- dashboardSidebar(
sidebarMenu(
#menuItem(text = "Home",tabName = "home"),menuItem(text = "Counties",tabName = "countiesdistricts"),menuItem(text = "Senate Districts",tabName = "senatedistricts"),menuItem(text = "Assembly Districts",tabName = "assemblydistricts"),menuItem(text = "Age and Party",tabName = "agegroups")
)
)
body <- dashboardBody(
mainPanel(
tabItems(
tabItem("countiesdistricts",tabsetPanel(
tabPanel(selectInput("county_districtname","Select County",unique(county$District)),dateRangeInput("county_dateRange","Select Date Ragne: ",format = "mm/yyyy",start = min(county$Date),end = max(county$Date),startview = "year",separator = " - "),# textOutput("countyDates"),# more stuff here
plotly::plotlyOutput("countyplot")
))
),tabItem("senatedistricts",tabsetPanel(
tabPanel(selectInput("senate_districtname","Select District",unique(senate$District)),# dateRangeInput("sen_dateRange","Select Date Range: ",# format = "mm/yyyy",# start = min(senate$Date),# end = max(senate$Date),# startview = "year",# separator = " - "),# textOutput("senateDates"),#more stuff here
plotly::plotlyOutput("senplot")
))
),tabItem("assemblydistricts",tabsetPanel(
tabPanel(selectInput("assembly_districtname",# Set up the tab
unique(assembly$District)),# dateRangeInput("ad_dateRange",# textOutput("assemblyDates"),plotly::plotlyOutput("adplot")
))
),tabItem("agegroups",tabsetPanel(
tabPanel(selectInput("agegroup_districtname","Select Age Group",unique(ageparty$District)),##date range goes here
plotly::plotlyOutput("ageplot")
))
)
)
)
)
### Assembly the UI -----------------------------------------------------------
ui <- dashboardPage(skin = "red",header = dashboardHeader( title = "Nevada Voter Reg Trends"),sidebar = sidebar,body = body
)#dashboardBody()
### Build the Server -----------------------------------------------------------
server <- function(input,output,session) {
CNTY <- reactive({
county %>%
filter(District == input$county_districtname,Date == input$county_dateRange)%>%
select(-District)
})
SEN <- reactive({
senate %>%
filter(District == input$senate_districtname)%>%
select(-District)
})
AD <- reactive({
assembly %>%
filter(District == input$assembly_districtname)%>%
select(-District)
})
AGE <- reactive({
ageparty %>%
filter(District == input$agegroup_districtname)%>%
select(-District)
})
output$assemblyDates <- renderText({Dates$SelectedDates})
Dates <- reactive()
observe({
Dates$SelectedDates <- c(as.character(format(input$county_dateRange[1],format = "%m/%Y")),as.character(format(input$county_dateRange[2],format = "%m/%Y")))
})
### Plotly outputs--------------------------------------------------------------
#County
output$countyplot <- plotly::renderPlotly({
ggplot(CNTY(),aes(x = Date,y = Voters,color = Party,group = Party,label = Percent)) +
geom_line(size = 1.125) +
geom_point(size = 2.5)+
scale_y_continuous(labels = comma) +
scale_color_manual(values=c("darkgreen","blue","red","orange","darkgray"),name = "Party") +
labs(x="Dates",y="Voter Registration",title= paste( input$county_districtname,"Voter Registration Trends"),caption = "Data Source: Nevada Secretary of State") +
theme(
plot.title = element_text(size = 15,face = "bold"),axis.text.x = element_text(angle = 0),plot.caption = element_text(hjust = -1)
)
})
#Senate
output$senplot <- plotly::renderPlotly({
ggplot(SEN(),title= paste( input$senate_districtname,caption = "Data Sourc: Nevada Secretary of State") +
theme(
plot.title = element_text(size = 15,axis.text.x = element_text(angle = 0)
)
})
#AD
output$adplot <- plotly::renderPlotly({
ggplot(AD(),title= paste( input$agegroup_districtname,axis.text.x = element_text(angle = 0)
)
})
#Age
output$ageplot <- plotly::renderPlotly({
ggplot(AGE(),axis.text.x = element_text(angle = 0)
)
})
}
shinyApp(ui = ui,server = server)
解决方法
input$count_dateRange
是一个长度为2的向量。在它的下面,您似乎将其视为标量。
county %>%
filter(District == input$county_districtname,Date == input$county_dateRange)%>%
select(-District)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。