R блестящий слайдертекстовый ввод в виде года и квартала и реактивной оси X - PullRequest
0 голосов
/ 02 апреля 2019

Я создаю блестящее приложение и хочу, чтобы моя ось 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)````
...