我使用此功能创建一个绘图对象:
aligned_plot <- function(a_data, mapping, col_vector, col_label) {
color <- NULL
x_aes <- "rank"
y_aes <- "case_rank"
Max_Dim <- max(a_data$case_rank)
Max_Rank <- max(a_data$rank)
Max_Case_Rank <- max(a_data$case_rank)
a_data %>%
ggplot(aes_string(x = x_aes, y = y_aes)) +
scale_x_discrete(drop = FALSE) + scale_y_discrete(drop = FALSE) +
labs(x = "Activitys", y = "Traces") +
theme_light()-> p
if (Max_Dim > 400)
p + geom_point(aes(color = Activity)) + scale_color_manual(name = col_label, values = col_vector) -> p
else {
p + geom_raster(aes(fill = Activity)) +
geom_vline(xintercept = seq(.5, Max_Rank, by = 1), color = "gray90") +
geom_hline(yintercept = seq(.5, Max_Case_Rank, by = 1), color = "gray90") +
scale_color_manual(name = col_label, values = col_vector) -> p
}
return(p)
}
在RStudio中以交互方式调用此函数时,创建绘图需要0.43秒。
此功能在Shinydashboard中使用:
output$Aligned_Chart <- renderUI({
addSpinner(plotlyOutput(ns("Aligned_Chart_Plotly"), height = 700), spin = "fading-circle", color = Spinner_Kleur)
})
output$Aligned_Chart_Plotly <- renderPlotly({
P_data <- rv$Doorloop_events
P_Map <- mapping(P_data)
P_data %>% aligned_data() %>% .$In_Scope %>%
aligned_plot(P_Map, col_vector(),
activity_id(P_data)) %>%
ggplotly()
})
现在执行aligned_plot()
大约需要2:20分钟。谁能解释造成延迟的原因? (Max_Dim是一个便利变量,其值为130,因此aligned_plot()
会生成geom_raster)
本
弄清楚如何添加微调框后,我可以跳过输出$ Aligned_Chart。但是创建图表仍然需要大约2分钟,因此我决定使用renderPlot:
output$Aligned_Chart_Plot <- renderPlot({
P_data <- rv_mod$Doorloop_events
P_Act <- activity_id(rv_mod$Doorloop_events)
P_Map <- mapping(P_data)
P_data %>% aligned_data() %>% .$In_Scope -> P_data
A_Plot <- aligned_plot(P_data, P_Map, col_vector(), P_Act)
A_Plot
})
aligned_data()
使用boxplot()
检测异常值,默认情况下,箱线图返回图。 renderPlot()
而不是返回geom_raster,而是绘制了箱线图。通过将boxplot()
替换为UnivariateOutlierDetection()
可以解决此问题。现在需要4秒钟来渲染我的情节。
但是,如按绘制方式进行渲染时,仍然需要1分钟的时间来渲染ggplotly()
创建的对象。
花很多时间正常吗?