Я пытаюсь сделать блестящее приложение.
Я хочу, чтобы мое приложение генерировало несколько графиков в зависимости от количества отмеченных флажков. Iris - это информационный фрейм, который имеет различные количественные переменные, и я пытаюсь динамически генерировать графики плотности 4 переменных, которые находятся в радужной оболочке.
Ниже мой сервер и страница пользовательского интерфейса до сих пор.
library(shiny)
library(ggplot2)
library(tidyverse)
df<-iris[,colnames(iris)!="Species"]
ui<-fluidPage(
titlePanel("Density Plots of Quantitative Variables"),
sidebarLayout( sidebarPanel( sliderInput("bw","Slide to change bandwidth
of Plot",min=0.1,max=20,value=3,step=0.1,animate=TRUE),
checkboxGroupInput("variableinp","Choose variables",
choices=colnames(df),selected = colnames(df)[1]),verbatimTextOutput("value")
),
mainPanel( plotOutput("densityplot"))
)
)
server<-function(input,output){
# observeEvent(input$variableinp, {
# print((input$variableinp))
# })
output$densityplot <- renderPlot({
if(!is.null(input$variableinp)) {
getoutandquant <- function(x) {
q1<-quantile(x)[[2]]
q3<-quantile(x)[[4]]
IQR<-q3-q1
out1<-q3+(1.5)*IQR
out2<-q1-(1.5)*IQR
#Finding the list of points which are outliers for a particular
variable.
out<-x[x>out1]
out2<-x[x<out2]
outliers<-tibble(x=c(out,out2),y=0)
return(outliers)
}
nplot<-length(input$variableinp)
x<-input$variableinp
for ( i in 1:nplot) {
outlier<-getoutandquant(df[,x[i]])
}
p1<-ggplot(df,aes_string(input$variableinp[i]))+
stat_density(geom="line",adjust=input$bw)+ ylab("Density\n")
p1+geom_point(data=outlier,aes(x,y),shape=23)
}
})
}
shinyApp(ui=ui,server=server)
Ниже приведен мой вывод. Как видно, генерируется только один сюжет. С 2 флажками, отмеченными галочкой, я бы хотел 2 участка, с 3 флажками, 3 участками и так далее. :
Может ли кто-нибудь дать мне подсказку или привести к тому, как я должен это сделать. Мои участки приносят пользу. Мне просто нужно создать несколько графиков, основываясь на количестве нажатых флажков.