我有一个非常大的数据集,我正在使用ggplot绘制Shiny。我有一个滑块绑定到x轴上的值,我想要重新着色所选的数据子集,并让其余的数据保持不变。
最简单的选择是重新创建整个图,但由于它是一个大型数据集,因此这是一个非常缓慢的过程。作为替代方案,我正在考虑让原始情节保持原样,并在plot.background = 'none'
上加上另一个情节,只有彩色点。我无法通过renderPlot
中的server.r
和plotOutput
中的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
)
)
任何提示?
答案 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)
这不会重绘完整的情节。由于我不是一个闪亮的用户,你必须测试自己如何以闪亮的方式做到这一点。