在闪亮的

时间:2015-07-31 13:07:40

标签: r ggplot2 shiny

我有一个非常大的数据集,我正在使用ggplot绘制Shiny。我有一个滑块绑定到x轴上的值,我想要重新着色所选的数据子集,并让其余的数据保持不变。

最简单的选择是重新创建整个图,但由于它是一个大型数据集,因此这是一个非常缓慢的过程。作为替代方案,我正在考虑让原始情节保持原样,并在plot.background = 'none'上加上另一个情节,只有彩色点。我无法通过renderPlot中的server.rplotOutput中的ui.r来实现此目标 -

server.r:

output$Plot1= renderPlot({
   ggplot(mtcars) + geom_point(aes(x = mpg, y = wt))
})

output$Plot2= renderPlot({
       ggplot(mtcars[mtcars$mpg > 15,]) + geom_point(aes(x = mpg, y = wt), color = 'Efficient')
})

ui.r(我不知道如何在其中使用Plot2):

fluidRow(
               class = 'Plot1Row',
               column(
                  plotOutput(
                     "Plot1", 
                     width = '100%'
                  ),
                  width = 12
               )
            )

任何提示?

1 个答案:

答案 0 :(得分:1)

这是一个解释我的评论的例子:

library(ggplot2)
p <- ggplot(mtcars[mtcars$mpg > 15,]) + geom_point(aes(x = mpg, y = wt), color = 'green')
p    

#produce an otherwise identical gtable with a subset of points with different color 
p1 <- ggplot(mtcars[mtcars$mpg > 15,]) + geom_blank(aes(x = mpg, y = wt), color = 'green') +
  geom_point(data = mtcars[mtcars$mpg > 25,], aes(x = mpg, y = wt), color = 'blue')
g1 <- ggplot_gtable(ggplot_build(p1))

library(gtable)
#find the correct viewport
seekViewport(grid.grep("panel", grep = TRUE)$name)
#draw just the points 
grid.draw(gtable_filter(g1, "panel")$grobs[[1]]$children$geom_point.points)

resulting plot

这不会重绘完整的情节。由于我不是一个闪亮的用户,你必须测试自己如何以闪亮的方式做到这一点。