使用选定变量的反应图,但如果使用 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))
我正在使用 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))