我使用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)})
})
})
我提前感谢您的帮助。
答案 0 :(得分:1)
美学形状以因子/整数为输入。 转换为因子。
g <- g + geom_point(data = sp, aes(shape = factor(Species), size=2))
答案 1 :(得分:0)
在Shinyapps.io网站中,您可以单击您正在运行的应用程序,然后单击&#34; Logs&#34;获取有关导致错误的更多具体细节。
此外,您可以使用:
shinyapps::showLogs()