R,如何阻止ggplot箱线图在一组链接箱线图中更新自身
当我创建一组链接的箱线图(在一个箱线图中选择点会高亮显示所有箱线图中的对应点)时,箱线图会不断更新自己不确定的次数(有时仅更新一次,有时最多更新20次) 请运行以下示例代码 我认为问题的根源是几何抖动()。有没有办法阻止箱线图自我更新?谢谢R,如何阻止ggplot箱线图在一组链接箱线图中更新自身,r,ggplot2,shiny,boxplot,jitter,R,Ggplot2,Shiny,Boxplot,Jitter,当我创建一组链接的箱线图(在一个箱线图中选择点会高亮显示所有箱线图中的对应点)时,箱线图会不断更新自己不确定的次数(有时仅更新一次,有时最多更新20次) 请运行以下示例代码 我认为问题的根源是几何抖动()。有没有办法阻止箱线图自我更新?谢谢 library(shiny) library(ggplot2) server <- function(input, session, output) { X = data.frame(x1 = rnorm(1000),
library(shiny)
library(ggplot2)
server <- function(input, session, output) {
X = data.frame(x1 = rnorm(1000),
x2 = rnorm(1000),
week = sample(LETTERS[1:10],1000,replace = TRUE)
)
D = reactive({
brushedPoints(X,input$brush_1, allRows = TRUE)
})
output$p1 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=week,y=x1))+
geom_boxplot() +
geom_jitter(aes(color=selected_))+
scale_color_manual(values = c("black","red"),guide=FALSE)
})
output$p2 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=week,y=x2))+
geom_boxplot() +
geom_jitter(aes(color=selected_))+
scale_color_manual(values = c("black","red"),guide=FALSE)
})
}
ui <- fluidPage(
splitLayout(
plotOutput("p1",brush = "brush_1"),
plotOutput("p2",brush = "brush_1")
)
)
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(GG2)
服务器猜测原因是当你刷一个绘图时,源表总是不断更新。因为所有绘图都使用相同的画笔id,无法识别哪个输入$brush_1是真正的“画笔”动作。一个图表已被刷新,输入$brush_1已更改,反应表D也将更新。基于新反应表的另一个绘图再次绘图,并使输入$brush_1再次更改
根据上面的想法,基于您的代码,制作了一个新的笔刷,以区分不同绘图的输入笔刷动作。箱线图在不确定的时间内不断自我更新的问题似乎已经解决。请尝试以下代码:库(闪亮)
library(shiny)
library(ggplot2)
server <- function(input, session, output) {
X = data.frame(x1 = rnorm(1000),
x2 = rnorm(1000),
week = sample(LETTERS[1:10],1000,replace = TRUE)
)
vals <- reactiveValues(
keeprows = rep(TRUE,nrow(X))
)
D = reactive({
R=cbind(X,vals$keeprows)
#print(sum(R[,"vals$keeprows"]==TRUE))
R
})
output$p1 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=week,y=x1))+
geom_boxplot() +
geom_jitter(aes(colour=vals$keeprows))+
scale_color_manual(values = c("black","red"),guide=FALSE)
})
output$p2 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=week,y=x2))+
geom_boxplot() +
geom_jitter(aes(color=vals$keeprows))+
scale_color_manual(values = c("black","red"),guide=FALSE)
})
observeEvent(input$brush_1,{
Res=brushedPoints(X,input$brush_1,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_2,{
Res=brushedPoints(X,input$brush_2,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$exclude_reset,{
vals$keeprows = rep(TRUE,nrow(X))
})
}
ui <- fluidPage(
actionButton("exclude_reset","Reset"),
splitLayout(
plotOutput("p1",brush = brushOpts("brush_1",resetOnNew = TRUE)),
plotOutput("p2",brush = brushOpts("brush_2",resetOnNew = TRUE))
)
)
shinyApp(ui = ui, server = server)
图书馆(GG2)
服务器您可能可以事先计算抖动,并使用geom_point
代替。另外请注意,您可能应该关闭箱线图的异常点。@Axeman您能给我一个使用geom_point
获得类似图表的例子,其中点分布在箱的垂直中心周围吗?谢谢。哦,我试着用geom\u点
替换geom\u抖动
,他们仍然不断更新自己。所以我错误地说,几何抖动是错误的根源。