渲染从拟合模型生成的图表以响应闪亮
Render a plot generated from a fitted model in reactive for shiny
我正在构建一个闪亮的应用程序,我想将使用 R 中的基本 plot
函数生成的绘图渲染到主面板中。用于绘图的数据是直接从拟合模型模拟的,但我无法将值提取到数据框中,但所有值都出现在 plot()
参数中(我不必将其提取为数据框,如果我可以找到关于如何将我的绘图渲染到主面板中的解决方案)。
我是这方面的新手,尝试过但到目前为止没有运气。如何在应用程序的主面板中渲染生成的图?下面是一个示例代码。
ui.r代码:
library(shiny)
shinyUI(fluidPage(
fluidRow(
column(12,h1('TITLE'), align='middle')
),
hr(),
sidebarLayout(
sidebarPanel(
sliderInput('COVAL', 'Covariate value', min=1, max=5, value=3,step=1),align='left', ),#sidebarPanel
mainPanel(
fixedRow(
imageOutput('PLOT', height = 600, width=1260) #?????
)
)#mainpanel
)#sidebarLayout
)#fluidPage
) #shinyUI
server.r代码:
library(data.table)
library(flexsurv)
#load some data
data(pbc, package="randomForestSRC")
data <- as.data.table(na.omit(pbc))
data[,years := days/365.25]
shinyServer(function(input,output) {
pred.data <- reactive({
COVAL <- input$COVAL
#fit the model
fit <- flexsurvspline(Surv(years, status) ~ albumin, data=data, k=1, scale='hazard')
#plot predictions using the fitted- at specific covariate value
#COVAL=3
ndata = data.frame(albumin=COVAL)
par(mfrow=c(1,1))
plot(fit, est=F,ci=F, col.obs = 'white')
lines(fit, newdata = ndata, ci=F, col=c('green'))
#plot <- recordPlot() #this one saves the plot as an object
#plot.new() #
#render the plot: ????
output$PLOT <- renderImage(
pred.data()
)#
})#reactive
})#shinyServer
library(shiny)
library(data.table)
library(flexsurv)
#load some data
data(pbc, package="randomForestSRC")
data <- as.data.table(na.omit(pbc))
data[, years := days/365.25]
ui <- fluidPage(
fluidRow(
column(12, h1('TITLE'), align='middle')
),
hr(),
sidebarLayout(
sidebarPanel(
sliderInput('COVAL', 'Covariate value', min=1, max=5, value=3, step=1),
align = 'left',
),
mainPanel(
plotOutput('PLOT', height = 600, width = 600)
)#mainpanel
)#sidebarLayout
)#fluidPage
server <- function(input, output) {
Fit <- reactive({
#fit the model
fit <-
flexsurvspline(Surv(years, status) ~ albumin, data=data, k=1, scale='hazard')
return(fit)
})#reactive
output$PLOT <- renderPlot({
ndata <- data.frame(albumin = input[["COVAL"]])
fit <- Fit()
plot(fit, est=FALSE, ci=FALSE, col.obs = 'black')
lines(fit, newdata = ndata, ci=FALSE, col = 'green')
})
}
shinyApp(ui, server)
我正在构建一个闪亮的应用程序,我想将使用 R 中的基本 plot
函数生成的绘图渲染到主面板中。用于绘图的数据是直接从拟合模型模拟的,但我无法将值提取到数据框中,但所有值都出现在 plot()
参数中(我不必将其提取为数据框,如果我可以找到关于如何将我的绘图渲染到主面板中的解决方案)。
我是这方面的新手,尝试过但到目前为止没有运气。如何在应用程序的主面板中渲染生成的图?下面是一个示例代码。
ui.r代码:
library(shiny)
shinyUI(fluidPage(
fluidRow(
column(12,h1('TITLE'), align='middle')
),
hr(),
sidebarLayout(
sidebarPanel(
sliderInput('COVAL', 'Covariate value', min=1, max=5, value=3,step=1),align='left', ),#sidebarPanel
mainPanel(
fixedRow(
imageOutput('PLOT', height = 600, width=1260) #?????
)
)#mainpanel
)#sidebarLayout
)#fluidPage
) #shinyUI
server.r代码:
library(data.table)
library(flexsurv)
#load some data
data(pbc, package="randomForestSRC")
data <- as.data.table(na.omit(pbc))
data[,years := days/365.25]
shinyServer(function(input,output) {
pred.data <- reactive({
COVAL <- input$COVAL
#fit the model
fit <- flexsurvspline(Surv(years, status) ~ albumin, data=data, k=1, scale='hazard')
#plot predictions using the fitted- at specific covariate value
#COVAL=3
ndata = data.frame(albumin=COVAL)
par(mfrow=c(1,1))
plot(fit, est=F,ci=F, col.obs = 'white')
lines(fit, newdata = ndata, ci=F, col=c('green'))
#plot <- recordPlot() #this one saves the plot as an object
#plot.new() #
#render the plot: ????
output$PLOT <- renderImage(
pred.data()
)#
})#reactive
})#shinyServer
library(shiny)
library(data.table)
library(flexsurv)
#load some data
data(pbc, package="randomForestSRC")
data <- as.data.table(na.omit(pbc))
data[, years := days/365.25]
ui <- fluidPage(
fluidRow(
column(12, h1('TITLE'), align='middle')
),
hr(),
sidebarLayout(
sidebarPanel(
sliderInput('COVAL', 'Covariate value', min=1, max=5, value=3, step=1),
align = 'left',
),
mainPanel(
plotOutput('PLOT', height = 600, width = 600)
)#mainpanel
)#sidebarLayout
)#fluidPage
server <- function(input, output) {
Fit <- reactive({
#fit the model
fit <-
flexsurvspline(Surv(years, status) ~ albumin, data=data, k=1, scale='hazard')
return(fit)
})#reactive
output$PLOT <- renderPlot({
ndata <- data.frame(albumin = input[["COVAL"]])
fit <- Fit()
plot(fit, est=FALSE, ci=FALSE, col.obs = 'black')
lines(fit, newdata = ndata, ci=FALSE, col = 'green')
})
}
shinyApp(ui, server)