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

时间:2015-02-19 19:19:01

标签: r plot 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')
)))

这是服务器.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)})


})

})

我提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

美学形状以因子/整数为输入。 转换为因子。

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

答案 1 :(得分:0)

在Shinyapps.io网站中,您可以单击您正在运行的应用程序,然后单击&#34; Logs&#34;获取有关导致错误的更多具体细节。

此外,您可以使用:

shinyapps::showLogs()