gpt4 book ai didi

R ggplot2 点击箱线图

转载 作者:行者123 更新时间:2023-12-04 20:33:54 24 4
gpt4 key购买 nike

当我单击图表中的一个点时,该点突出显示为红色。

但很快又变黑了。

有没有办法保持选择?

library(shiny)
library(ggplot2)


server <- function(input, session, output) {
mtcars$cyl = as.character(mtcars$cyl)


D = reactive({
nearPoints(mtcars, input$click_1,allRows = TRUE)
})

output$plot_1 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=cyl,y=mpg)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(aes(color=selected_),width=0.02,size=4)+
scale_color_manual(values = c("black","red"),guide=FALSE)

})

output$info = renderPrint({
D()
})
}

ui <- fluidPage(

plotOutput("plot_1",click = clickOpts("click_1")),
verbatimTextOutput("info")

)

shinyApp(ui = ui, server = server)

最佳答案

好吧,我的方法与 Valter 的方法略有不同:选定的点变为红色,而您可以取消选择它们,它们又会变回黑色。

实现此效果的关键(或什至 Valter 的回答选择了 1 个点)是使用 reactiveValues跟踪选定的点。

library(shiny)
library(ggplot2)


server <- function(input, session, output) {
mtcars$cyl = as.character(mtcars$cyl)

vals <- reactiveValues(clicked = numeric())
observeEvent(input$click_1, {
# Selected point/points
slt <- which(nearPoints(mtcars, input$click_1,allRows = TRUE)$selected)

# If there are nearby points selected:
# add point if it wasn't clicked
# remove point if it was clicked earlier
# Else do nothing

if(length(slt) > 0){
remove <- slt %in% vals$clicked
vals$clicked <- vals$clicked[!vals$clicked %in% slt[remove]]
vals$clicked <- c(vals$clicked, slt[!remove])
}
})

D = reactive({
# If row is selected return "Yes", else return "No"
selected <- ifelse(1:nrow(mtcars) %in% vals$clicked, "Yes", "No")
cbind(mtcars, selected)
})

output$plot_1 = renderPlot({
set.seed(123)
ggplot(D(),aes(x=cyl,y=mpg)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(aes(color=selected),width=0.02,size=4)+
scale_color_manual(values = c("black","red"),guide=FALSE)
})

output$info = renderPrint({
D()
})
}

ui <- fluidPage(

plotOutput("plot_1",click = clickOpts("click_1")),
verbatimTextOutput("info")

)

shinyApp(ui = ui, server = server)

关于R ggplot2 点击箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com