闪亮的 renderPlot 不起作用
Shiny renderPlot does not work
问题:
图表不渲染。没有错误。
描述:
即使我没有在下面使用反应值,它也应该起作用,因为它在观察到的事件中。渲染 table 效果非常好。
附加信息
肯定填充了 AllElements 数据!我把它们打印出来检查。它们是双精度类型的向量。
library(shiny)
library(shinyWidgets)
library(shinythemes)
library(datasets)
shinyApp(
ui = navbarPage(
"Real Time Instruments",
############################# Page 1 #############################
tabPanel("Training",
mainPanel(
actionButton("analyse", "Train Model", width = "100%")
)
############################# Page 2 #############################
),
tabPanel("Results",
tableOutput ( "error"),
plotOutput("predict_plot", inline = TRUE)
)
),
server = function(input, output, session) {
### Analyse the data
analyse <- observeEvent(input$analyse , {
# Run the Analysis
AllElements <- data.frame( x = 1:10 )
# populate the results
populateResults (AllElements)
})
#### Results Page ####
populateResults <- function (allElements) {
# First the error table
output$error <- renderTable(allElements$error_sd, digits = 5) ## <--- THIS WORKS!!!
# Second Plots
# par(mar = rep(2, 4)) # Might be needed
x <- allElements$x
xlab <- allElements$x
y <- allElements$x
ylab <- allElements$x
# Plot Predict Var
output$predict_plot <- renderPlot({plot (x, y)}) # <--- THIS DOESN'T WORK!!!
}
})
}
)
我不得不更改您的代码中的一些内容。
- 我将数据转换成
eventReactive
- 我没有使用你的函数
populateResults
,用独立的渲染函数代替了它
- 我向示例数据集添加了一列
error_sd
,以便稍后可以在渲染函数中找到它
- 我不知道我是否遗漏了什么,看看我的代码。
这个例子对我有用:
library(shiny)
library(shinyWidgets)
library(shinythemes)
library(datasets)
shinyApp(
ui = navbarPage(
"Real Time Instruments",
tabPanel("Training",
mainPanel(
actionButton("analyse", "Train Model", width = "100%")
)
),
tabPanel("Results",
tableOutput ( "error"),
plotOutput("predict_plot")
)
),
server = function(input, output, session) {
analyse <- eventReactive(input$analyse , {
output <- data.frame( x = 1:10 , error_sd = 1:10)
return(output)
})
output$error <- renderTable({
analyse()$error_sd} , digits = 5
)
output$predict_plot <- renderPlot({
# x <- allElements$x
# xlab <- allElements$x
# y <- allElements$x
# ylab <- allElements$x
plot(analyse()$x, analyse()$x)
})
})
问题:
图表不渲染。没有错误。
描述:
即使我没有在下面使用反应值,它也应该起作用,因为它在观察到的事件中。渲染 table 效果非常好。
附加信息
肯定填充了 AllElements 数据!我把它们打印出来检查。它们是双精度类型的向量。
library(shiny)
library(shinyWidgets)
library(shinythemes)
library(datasets)
shinyApp(
ui = navbarPage(
"Real Time Instruments",
############################# Page 1 #############################
tabPanel("Training",
mainPanel(
actionButton("analyse", "Train Model", width = "100%")
)
############################# Page 2 #############################
),
tabPanel("Results",
tableOutput ( "error"),
plotOutput("predict_plot", inline = TRUE)
)
),
server = function(input, output, session) {
### Analyse the data
analyse <- observeEvent(input$analyse , {
# Run the Analysis
AllElements <- data.frame( x = 1:10 )
# populate the results
populateResults (AllElements)
})
#### Results Page ####
populateResults <- function (allElements) {
# First the error table
output$error <- renderTable(allElements$error_sd, digits = 5) ## <--- THIS WORKS!!!
# Second Plots
# par(mar = rep(2, 4)) # Might be needed
x <- allElements$x
xlab <- allElements$x
y <- allElements$x
ylab <- allElements$x
# Plot Predict Var
output$predict_plot <- renderPlot({plot (x, y)}) # <--- THIS DOESN'T WORK!!!
}
})
}
)
我不得不更改您的代码中的一些内容。
- 我将数据转换成
eventReactive
- 我没有使用你的函数
populateResults
,用独立的渲染函数代替了它 - 我向示例数据集添加了一列
error_sd
,以便稍后可以在渲染函数中找到它 - 我不知道我是否遗漏了什么,看看我的代码。
这个例子对我有用:
library(shiny)
library(shinyWidgets)
library(shinythemes)
library(datasets)
shinyApp(
ui = navbarPage(
"Real Time Instruments",
tabPanel("Training",
mainPanel(
actionButton("analyse", "Train Model", width = "100%")
)
),
tabPanel("Results",
tableOutput ( "error"),
plotOutput("predict_plot")
)
),
server = function(input, output, session) {
analyse <- eventReactive(input$analyse , {
output <- data.frame( x = 1:10 , error_sd = 1:10)
return(output)
})
output$error <- renderTable({
analyse()$error_sd} , digits = 5
)
output$predict_plot <- renderPlot({
# x <- allElements$x
# xlab <- allElements$x
# y <- allElements$x
# ylab <- allElements$x
plot(analyse()$x, analyse()$x)
})
})