Я создаю блестящее приложение и хочу, чтобы моя ось X изменялась в зависимости от диапазона ползунка, выбранного пользователем. Диапазон слайдера - год и квартал, поэтому я должен использовать ввод слайдера, а не ввод слайдера.
После многих попыток я не могу заставить работать ось X, получая различные ошибки. Слайдер работает правильно, а реактивность - нет.
При использовании идентификатора ввода в коде в качестве ползунка x = input $ я получаю сообщение об ошибке. Эстетика должна иметь длину 1 или совпадать с данными (4704): x.
При использовании ползунка $ input ID в качестве X клюетов, меток и пределов график является реактивным, но отображаются только две точки, а не весь диапазон между двумя выбранными точками.
##### UI
ui <- fluidPage(theme=shinytheme("lumen"),
titlePanel(
fluidRow(
column(9, "Cancer Outcomes: Stage at Diagnosis"),
tabsetPanel(
tabPanel("Plot",
sidebarLayout(
sidebarPanel(
sliderTextInput("slider", strong("Year and Quarter"),
choices = unique(mydata2$PERIOD), selected = c(("2011-Q4"),("2017-Q3")),
from_min=("2011-Q4"), to_max=("2017-Q3"), dragRange=TRUE
),
selectInput(inputId = "GEOG_NAME", label=strong("CCG"),
choices = unique (mydata2$GEOG_NAME), selected = "ENGLAND"),
selectInput(inputId = "GEOGRAPHYref", label=strong("CCG Reference"),
choices = unique (mydata2$GEOGRAPHYref),
selected ="ENGLAND"),
checkboxInput(inputId="ConfidenceIntevals", label=strong("Display Confidence Intevals"), value=FALSE)
),
mainPanel(plotOutput("view"))))
))))
###### Function for the graph
shovegraphintofunction1 = function(input) {
CCGdata = mydata2[(mydata2$GEOG_NAME==input$GEOG_NAME),]
CCGrefdata = mydata2[(mydata2$GEOGRAPHYref==input$GEOGRAPHYref),]
lineplot = ggplot(data=CCGdata, mapping=aes(x=PERIOD, y=statistic, group=statistic.name)) +
labs(y="Patients diagnosed at an early stage", x="Financial Quarter", title=paste0("Patients diagnosed at an early stage in ", input$GEOG_NAME, " and ", input$GEOGRAPHYref, ", 2011-2017")) +
geom_line(aes(color=statistic.name, size=PERIOD), position=position_dodge(0.1), na.rm=T)+
geom_line(data=CCGrefdata, mapping=aes(x=input$slider, y=statistic, group=statistic.name, col="Reference Proportion", size="Reference Proportion"), position=position_dodge(0.3), na.rm=T)+
scale_y_continuous(breaks=seq(0,70,10), labels=c("0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%"), limits=c(0, 70))+
#scale_x_discrete(breaks = PERIOD, labels=PERIOD, limits=PERIOD)+
scale_colour_manual(name= " ", labels=c("Quarterly Proportion", "Reference Proportion", "Year Average"), values = c("seagreen3", "lightslategrey", "seagreen"))+
scale_size_manual(name= " ", labels=c("Quarterly Proportion", "Reference Proportion", "Year Average"), values = c(1, 1, 1.5))+
theme(legend.position = "bottom", legend.title=element_text(size=14),
if(input$ConfidenceIntevals){lineplot +
geom_path(data=upperq[upperq$GEOG_NAME==input$GEOG_NAME,],mapping=aes(x=PERIOD, y=statistic, group=statistic.name), linetype="dotted", size=0.05, colour="seagreen3", position=position_dodge(0.3), na.rm=T)+
geom_path(data=lowerq[lowerq$GEOG_NAME==input$GEOG_NAME,],mapping=aes(x=PERIOD, y=statistic, group=statistic.name), linetype="dotted", size=0.05, colour="seagreen3", position=position_dodge(0.3), na.rm=T)+
}
else {lineplot}
}
#### Server
server <- function(input,output){
output$view <- renderPlot({
shovegraphintofunction1(input)
}, height =600 )
}
shinyApp(ui=ui, server=server)````