如何渲染其他包的绘图,如R Shiny中的DiagrammeR



我正试图在Shiny中创建一个绘图,但它不起作用。它是空白的。我认为这是因为lavaanPlot使用了DiagrammeRsvg图形。

这是代码

library(shiny)
library(lavaan)
library(lavaanPlot)
ui <- fluidPage(
titlePanel("Text Input"),
sidebarLayout(
sidebarPanel(
textAreaInput(inputId = "text1", 
label = "Syntax"), 
value = "Enter formula"),
mainPanel(
plotOutput("plot"),
verbatimTextOutput("text1"),
verbatimTextOutput("regout")
)))
server <- function(input, output, session) {
formula <- reactive({
tryCatch({
input$text1
}, error = function(e) NULL)
})
model <- reactive({
if(!is.null(formula()))
tryCatch({
cfa(formula(), data = HolzingerSwineford1939)
}, error = function(e) NULL)
})
results <- reactive({
if(!is.null(model())){
summary(model(), fit.measures = TRUE)
}
}) 
output$regout <- renderPrint({
results()
})
plot2 <- reactive({
lavaanPlot(model = model)
})
output$plot <- renderPlot({
plot2
})
}
shinyApp(ui = ui, server = server)

我有时会遇到这样的错误:

Error: trying to get slot "ParTable" from an object (class "reactiveExpr") that is not an S4 object 

在ui中。输出图的R代码为

mainPanel(plotOutput("plot")

但是,在服务器中。R输出$plot的名称为plot2,

output$plot <- renderPlot({plot2......

也许原因就在上面。

我将绘图作为推荐的函数,然后使用renderGrVizgrVizOutput,它起作用了。

我做到了:

output$plot2 <- renderGrViz({
lavaanPlot(model = model())
})

和这个

grVizOutput("plot2", width = "50%", height = "100px")

相关内容

  • 没有找到相关文章

最新更新