plotly / plotly/plotly.R

geom_sina plot doesn't show when linked to another plot via brushing in Shiny

Offen
#1,858 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
R
Sterne
2.7k
Forks
641
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Hello,

I'm attempting to link points from a geom_sina object to another plot (it will be a bar-plot but for now, I just have a scatterplot to illustrate the problem). The issue is that when I put the "key=key" aesthetic into geom_sina, the plot doesn't show up.The plot will show up if I remove the "key=key" aesthetic, but then I have no means by which to connect the plots. I think this might be a bug given that this works fine with geom_point.

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

df = diamonds 
df = df[sample(1:nrow(df), size=1000, replace=FALSE), ] %>%
  rownames_to_column("key")

server <- function(input, output) {
  output$my_points <- renderPlotly({
    p = ggplot(df, aes(x=cut, y=price, label=clarity)) +
      coord_flip() +
      ggforce::geom_sina(aes(color=carat, key=key), alpha=.2) +
      # gggforce::geom_sina(aes(color=carat), alpha=.2) + # this will make the plot show up, but doesn't link it to the other
      # geom_point(aes(color=carat, key=key), alpha=.2) + # using geom_point works here
      theme_light()
    
    ggplotly(p, source="ggplotly_points")
  })
  
  selected_values <- reactive({
    brush <- event_data("plotly_click", source="ggplotly_points")
    if (is.null(brush)) {
      TRUE
    } else {
      df$key == (brush$pointNumber + 1)
    }
  })
  output$scatter <- renderPlotly({
    df %>%
      filter(selected_values()) %>%
      plot_ly(
        x = ~carat, 
        y = ~price, 
        alpha = 0.2
      ) %>%
      toWebGL()
  })
}

ui <- fluidPage(
  plotlyOutput("my_points"),
  plotlyOutput("scatter")
)


shinyApp(ui, server)

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie damit, das bereitgestellte R Shiny-Beispiel auszuführen und den Fall ggforce::geom_sina mit dem funktionierenden Fall geom_point zu vergleichen. Verfolgen Sie die ggplotly-Konvertierung und die Behandlung von key, um zu ermitteln, warum das Hinzufügen von key=key verhindert, dass der Plot gerendert wird; abgeschlossen ist die Aufgabe, wenn der sina-Plot angezeigt wird und seine angeklickten Punkte weiterhin mit dem zweiten Plot verknüpft sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
r
Bereich
data-visualization
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.