使用选定变量的反应图,但如果使用 facet 则崩溃,Shiny

Reactive plot using selected variables but crashes if facet used, Shiny

我正在使用 Shiny 和著名的数据集 iris 创建反应图。

我能够使绘图反应到用户可以选择每个轴使用哪个变量的程度。但是,我想使用 facet_grid 函数绘制不止一种鸢尾花。如果我选择了不止一种,闪亮的就会崩溃。

这里是ui.R:

library(shiny)

shinyUI(
pageWithSidebar(

headerPanel("3 species of iris"),
sidebarPanel(
  checkboxGroupInput("Species", label = h4("Pick the Species"), choices =     levels(iris$Species)),
  actionButton("lr",label = h5("Draw Linear Regression Line")),
  radioButtons("xaxis", label= h4("Pick the variable for x-axis"), choices = names(iris[0:4])),
  radioButtons("yaxis", label= h4("Pick the variable for y-axis"), choices = names(iris[0:4]))
  ),

  mainPanel( 
      div('Correlation between the Length and Width for Petal and Sepal from each of 3 species'),
      plotOutput('iris_plot')
)))

这里是 server.R:

library(shiny)
# Plotting 
library(ggplot2)

data(iris)

# Shiny server 
shinyServer(function(input, output) {

  output$iris_plot <- renderPlot({

if(is.null(input$Species))
    return()    
sp <- iris[iris$Species %in% input$Species,]

# Draw a plot for any checked iris species. 

if(is.null(input$xaxis))
  return()
if(is.null(input$yaxis))
  return()

g <- ggplot(sp, aes_string(x= input$xaxis, y=input$yaxis)) +
    geom_point(shape = sp$Species, size=2) +  
    facet_grid(Species ~ .)

print(g)

# The action button's initial value is set to 0 and the increment increases by 1 each time it is clicked.
# Use this logic to make the button capable of both drawing and removing the linear regression line. 

if((input$lr)%%2==0)
  return()
isolate({lm <- g + geom_smooth(aes_string(x= input$xaxis, y=input$yaxis), method=lm)
print(lm)})


})

})

在此先感谢您的帮助。

在 Shinyapps.io 网站中,您可以单击您使用的应用程序 运行,然后单击 "Logs" 以获取有关导致错误的原因的更多具体详细信息。

另外,您可以使用:

shinyapps::showLogs()

美学造型以factor/integer为输入。 转换为因数。

g <- g + geom_point(data = sp, aes(shape = factor(Species), size=2))