以下是我要制作的闪亮的小复制示例:
library(shiny)
library(ggplot2)
agedata <- c(10,10,20,20,10,30,31,32,20,30,30,40,30,21,23,23,12,23,23,44,33,22,11,22,44,33,34,34,32,23)
agegrou <- c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "c", "c", "c", "c", "c", "c", "c","c","c","c")
ageframe <- data.frame(agedata,agegrou)
ui <- fluidPage(
checkboxGroupInput("grp", "Check the Group", c("a", "b", "c")),
plotOutput("ageplot")
)
server <- function(input, output) {
output$ageplot <- renderPlot({
DATSET <- subset(ageframe, agegrou %in% input$grp)
ggplot(DATSET, aes(x = agegrou, y = agedata)) + geom_violin()
})
}
shinyApp(ui,server)
所以基本上,这是让用户单击多个组,然后绘制该组年龄的小提琴图。
现在的问题是,现实中使用的数据帧要大得多,包含数百万行和数十个组。因此,小提琴图通常会在百万行上进行多次计算,而这太慢了。
是否有一种方法可以预先计算大部分小提琴图(例如预先计算边界多边形),从而使闪亮的服务器不再需要在庞大的数据集上计算小提琴图?
我试图在github上查看geom_violin的代码,以查看是否可以以某种方式对其进行修改,但是看起来相当复杂。