我有大约10个从ggplot转换的情节图在我的闪亮应用程序中,每10秒刷新一次。 Plotly工作正常,几次刷新,但后来显示ERROR太多开放设备。
我的代码如下(简称只显示一个图表):
server.R
pullData是从数据库中提取数据的函数。
library(lubridate)
library(shinyjs)
library(ggplot2)
library(plotly)
server <- function(input, output, session) {
d <- reactive({
invalidateLater(10000, session)
pullData() %>% filter(!is.na(time))
})
output$Run <- renderPlotly({
pdf(NULL)
ggplotly(ggplot(d(), aes(x = as.POSIXlt(time) , y = mile)) +
geom_point() +
theme_bw() +
xlab('Time') +
ylab('mile'))
})
ui.R
library(shinydashboard)
library(shiny)
library(shinyjs)
library(plotly)
ui <- dashboardPage(
dashboardHeader(title = "Analytics DashBoard")
,skin = 'green'
,dashboardSidebar(
tags$head(
tags$style(HTML("
.sidebar { height: 90vh; overflow-y: auto; }
" )
)
),
# sidebarSearchForm(label = "Search...", "searchText", "searchButton"),
sidebarMenu(
, menuItem("Real Time Graphs", tabName = "RealTimeG", icon = icon("cog"))
)
)
,dashboardBody(
tabItems(
,tabItem(
tabName = "RealTimeG"
,fluidRow(
box(
title = "total Run Time"
,plotlyOutput("Run")
, width = 6
)
)
)
))
什么是问题?以及如何解决?
答案 0 :(得分:3)
我遇到了同样的问题。我在dev.off()
函数中使用renderPlotly
解决了这个问题。尝试做这样的事情:
utput$Run <- renderPlotly({
pdf(NULL)
g<-ggplotly(ggplot(d(), aes(x = as.POSIXlt(time) , y = mile)) +
geom_point() +
theme_bw() +
xlab('Time') +
ylab('mile'))
dev.off()
g
})
每次刷新绘图时,看起来像创建/打开(不确定)新的图形设备。你可以通过在闪亮的应用中打印dev.list()
来检查这一点。几次刷新后你会得到这样的东西:
RStudioGD png pdf pdf pdf pdf pdf pdf pdf pdf
2 3 4 5 6 7 8 9 10 11
pdf pdf pdf pdf pdf pdf pdf pdf pdf pdf
12 13 14 15 16 17 18 19 20 21
pdf pdf pdf pdf pdf pdf pdf pdf pdf pdf
22 23 24 25 26 27 28 29 30 31
pdf pdf pdf pdf pdf pdf pdf pdf pdf pdf
32 33 34 35 36 37 38 39 40 41
pdf pdf pdf pdf pdf
42 43 44 45 46