1
是否可以預先計算ggplot直方圖的值?計算多個直方圖確實會減慢我的ShinyR應用程序的速度,所以我想找到一種方法來緩存直方圖,以便只對給定的一組參數計算一次。我檢查了docs,但沒有看到任何關於這個。道歉,如果我錯過了什麼,但可以有人指向我如何做到這一點的文件,或告訴我,這是不可能的?可能預先計算ggplot直方圖?
是否可以預先計算ggplot直方圖的值?計算多個直方圖確實會減慢我的ShinyR應用程序的速度,所以我想找到一種方法來緩存直方圖,以便只對給定的一組參數計算一次。我檢查了docs,但沒有看到任何關於這個。道歉,如果我錯過了什麼,但可以有人指向我如何做到這一點的文件,或告訴我,這是不可能的?可能預先計算ggplot直方圖?
你可以做這樣的事情:
library(shiny)
library(ggplot2)
n <- 400
server <- function(input, output) {
cachedData <<- list()
datasetInput <- reactive({
switch(input$dataset,
"data1" = list("name"="dataset1", "data"=data.frame("x"=runif(n),"y"=runif(n)), "plot"=NULL),
"data2" = list("name"="dataset2", "data"=data.frame("x"=runif(n),"y"=runif(n)), "plot"=NULL),
"data3" = list("name"="dataset3", "data"=data.frame("x"=runif(n),"y"=runif(n)), "plot"=NULL))
})
observeEvent(input$run,{
d <- datasetInput()
# If dataset cached
if (d$name %in% names(cachedData)){
}
# Else cache dataset
else{
cachedData[[d$name]] <<- d
}
# See if data is loaded
if (is.null(cachedData[[d$name]]$plot)){
print("Creating Plot")
cachedData[[d$name]]$plot <<- ggplot(data=d$data,aes(x=x)) + geom_histogram(stat="bin")
}
else{
print("Loading plot")
}
# Else save data
output$plot <- renderPlot({ cachedData[[d$name]]$plot})
})
}
ui <- shinyUI(fluidPage(
selectInput("dataset", "Choose a dataset:",
choices = c("data1", "data2", "data3")),
plotOutput("plot"),
actionButton('run','Generate Plot')
)
)
shinyApp(ui = ui, server = server)
的cachedData列表然後可以加載和保存與load
和save
功能。
您可以將圖表保存爲圖像並在正確的時間顯示正確的圖像。 – Gregor
@Gregor但繪製我需要renderPlot和加載圖像我需要renderImage。有沒有辦法在這些之間無縫轉換?似乎我將不得不花很多時間偷偷摸摸地加載某個情節或圖像,不是嗎?這可能會相當混亂。 – sunny
'x < - hist(...,plot = F)'給你休息和計數。你可以使用'geom_bar(...,stat =「identity」)'來繪製它。 – Axeman