#r #shiny
#r #блестящий
Вопрос:
Данные состоят из состояний США, их типов построения (символьных), потерь переменных и стоимости потерь для 2 моделей (т. е. 4 факторов) и их соответствующих значений (float). Тип построения будет указан по оси X, стоимость потерь будет отображаться в виде гистограммы, а потери будут отображаться в виде линейного графика. checkboxgroup должна принимать входные данные от пользователя и отображать четыре графика рядом в порядке, в котором они выбраны.
Я попытался построить график, но не могу отобразить его правильным образом.
Пожалуйста, помогите
Код отображает список графиков, принимающих входные данные от пользователя. Например: график 1, График2, график 3, График4 и график 5. Если я выберу опцию 1,2,4,5, это оставит пустое место для графика 3 и построит графики в столбик
ui <- fluidPage(
headerPanel("Construction"),
sidebarPanel(
dropdownButton(label= "City", status = "default",width=400,tooltip = TRUE,circle = FALSE,
checkboxGroupInput("check","Check" ,choices = unique(raw$City), selected = NULL)),
actionButton("plot","Display")
),
mainPanel(
lapply(1:length(unique(raw$City)), function(i) {
plotOutput(paste0('plot',i))
}
)
)
)
server <- function(input, output) {
takinput <- reactive({
a<- subset(raw, City %in% input$check)
return(a)
})
plotlist <- lapply(1:length(unique(raw$City)), function(i) {
output[[paste0('plot',i)]] <- renderPlot({
input$plot
isolate(
if(any(choice[i] %in% input$check)){
b<- takinput()
#View(b)
ggplot(data = b,aes(x= Construction.Type, y= value,fill = variable))
geom_bar(data = subset(b, variable %in% c("RMS.AAL.per..Million","AIR.Loss.Cost.per..Million")
amp; City == choice[i]) ,stat = 'sum' , position = "dodge", na.rm=TRUE)
guides(fill = FALSE)
geom_line(data = subset(b, variable %in% c("RMS.Relative.AAL","AIR.Relative.Loss.Cost")
amp; City == choice[i]), linetype = "dashed",
aes(y = value*(1400/1.4),group =variable, colour= variable))
scale_color_manual(values =c("RMS.Relative.AAL" = "#7030A0","AIR.Relative.Loss.Cost" = "#FFC000"))
scale_fill_manual(values = c("#FFC000","#FFC000","#7030A0",'#7030A0'))
scale_y_continuous(name = expression("AAL Per Million"), sec.axis =sec_axis( ~.*1.4/1400, name = "Relative AAL"))
theme(axis.text.x = element_text(angle= 25, vjust = 1.0,hjust = 1.0), legend.position = "none",
panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line=element_line(colour = "black"))
labs(title= as.vector(choice[i]))
annotate(geom="text",x = c(4,4),y= c(1200,1140),label = c("RMS","AIR"))
annotate(geom="rect",xmin = c(3.3,3.3),xmax = c(3.7,3.7), ymin = c(1120,1180),ymax = c(1165,1225),
colour = c("#FFC000","#7030A0"), fill = c("#FFC000","#7030A0"))
}
)
})
})
}
shinyApp(ui,server)
Ожидаемые результаты: 4 графика в сетке 2 на 2 в порядке ввода от пользователя
Фактические результаты: Код отображает список графиков, принимающих входные данные от пользователя. Например: график 1, График2, график 3, График4 и график 5. Если я выберу опцию 1,2,4,5 , это оставит пустое место для графика 3 и построит графики в столбик.
Комментарии:
1. Может кто-нибудь, пожалуйста, разобраться в этом?
2. нужна помощь… Пожалуйста, ознакомьтесь с этим
3. Что вы хотите увидеть, если выбрано 2 графика? 3 ? 5 ?