闪亮/绘图:仅使用选定点的标签更新绘图

  • 本文关键字:绘图 标签 更新 闪亮 r
  • 更新时间 :
  • 英文 :


使用 R Shiny 和 plotly 我创建了一个交互式散点图。

如何修改我的代码以交互方式仅标记用户选择的点?

示例图

非常感谢您的帮助!万事如意,基督教

library(plotly)
library(shiny)
library(dplyr)
data <- data.frame(matrix(runif(500,0,1000), ncol = 2, nrow = 100)) %>%
  mutate(ID = row_number())
ui <- fluidPage(
  plotlyOutput("plot"),
  verbatimTextOutput("hover"),
  verbatimTextOutput("click"),
  verbatimTextOutput("brush"),
  verbatimTextOutput("zoom"))
server <- function(input, output, session) {
  output$plot <- renderPlotly({
    p <- ggplot(data, aes(x = X1, y = X2, key = ID)) +
      geom_point()
    ggplotly(p) %>% layout(dragmode = "select")
  })
}
shinyApp(ui, server)

下面是一个可能的解决方案。我使用反应函数来"标记"选定的点。我不确定您究竟要如何显示所选点的 ID。该代码在选择点时将 ID 添加为文本。此外,我添加了一些抖动以将 ID 从点移开。

library(plotly)
library(shiny)
library(dplyr)
data <- data.frame(matrix(runif(500,0,1000), ncol = 2, nrow = 100)) %>%
  mutate(ID = row_number())
ui <- fluidPage(
  plotlyOutput("plot"),
  verbatimTextOutput("hover"),
  verbatimTextOutput("click"),
  verbatimTextOutput("brush"),
  verbatimTextOutput("zoom"))
server <- function(input, output, session) {
  output$plot <- renderPlotly({
    data <- get_data()
    p <- ggplot(data, aes(x = X1, y = X2, key = ID)) +
      geom_point() + geom_text(data=subset(data, show_id),aes(X1,X2,label=ID), position = position_jitter(width = 20,height = 20))
    ggplotly(p, source = "subset") %>% layout(dragmode = "select")
  })
  get_data <- reactive({
    event.data <- event_data("plotly_selected", source = "subset")
    data <- data %>% mutate(show_id = FALSE)
    if (!is.null(event.data)) {
      data$show_id[event.data$pointNumber + 1] <- TRUE
    }
    data
  })
}
shinyApp(ui, server)

最新更新