R Полностью отключить Legend Click и Legend Double Click - PullRequest
0 голосов
/ 18 мая 2019

Я бы хотел отключить выбор легенды сюжета со стороны сервера, используя R Plotly. здесь мы видим, что этого можно добиться на графике javascript, используя следующее,

gd.on('plotly_legendclick',function() { return false; })

Есть ли способ достичь этого в R, используя event_register() или event_data()?

Я нашел хакерское решение, использующее CSS для отключения легенды. Однако, если у вас есть несколько разных графиков для одного и того же output$gg, код CSS отключает легенду для всех графиков.

Reprex:

Конечная цель, нажав на легенду ниже, не должна скрывать ни одного из пунктов.

library(shiny)
library(plotly)
library(tidyverse)

ui <- fluidPage(
  plotlyOutput("gg"),
  verbatimTextOutput("click"),
  verbatimTextOutput("doubleclick")
)

server <- function(input, output, session) {

  output$gg <- renderPlotly({
    p <- ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) +
      geom_point() + 
      facet_wrap(~vs)
    ggplotly(p) %>%
      event_register("plotly_legendclick") %>%
      event_register("plotly_legenddoubleclick")
  })

  output$click <- renderPrint({
    event_data("plotly_legendclick")
  })

  output$doubleclick <- renderPrint({
    event_data("plotly_legenddoubleclick")
  })
}

shinyApp(ui,server)

1 Ответ

1 голос
/ 18 мая 2019

Это работа для htmlwidgets::onRender:

library(plotly)
library(htmlwidgets)

x <- c(1:15)
y <- c(1:15)
w <- gl(3,5)
dat <- data.frame(x = x, y = y, w = w)
example <- ggplot(dat, aes(x = x, y = y, color = w)) + geom_line()

ggplotly(example) %>% 
  onRender("function(el,x){el.on('plotly_legendclick', function(){ return false; })}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...