2017-03-13 1 views
2

Ich mag Daten in R zeichnen, so dass Benutzer, welche Instanzen (die Faktorstufen) plotten auswählen können. Ich würde es gerne tun mit plotly und dann hosten es mit Shiny Server.Doppelte Legende Einträge plotly und Shiny-Server mit

Das Problem ist, dass ich jeden Legendeneintrag zweimal wiederholt, nachdem ich meine Auswahl aktualisiert habe (d. H. Das erste Mal richtig rendert, aber nachdem ich auf eine andere Variable geklickt habe, erscheint das Problem). Hier

ist die Darstellung: enter image description here

Das seltsame daran ist, dass dieses Problem nicht vorhanden ist, wenn lokal ausgeführt wird (zB innerhalb R Studio oder mit runApp()) oder mit shinyapps.io, sondern nur bei der Verwendung von Shiny Server .R

gibt es eine Möglichkeit, dies zu lösen und doppelte Einträge zu vermeiden?

Reproduzierbare Beispiel:

library(plotly) 

ui <- fluidPage(
    fluidRow(
    column(2, 
      checkboxGroupInput("species", 
           label = "Species", 
           choices = unique(iris$Species))), 
    column(10, 
      plotlyOutput('irisPlotly')) 
) 
) 

server <- function(input, output) { 
    # Filter only selected species 
    selectedData <- reactive({ 
    iris[iris$Species %in% input$species, ] 
    }) 

    # Render plotly plot 
    output$irisPlotly <- renderPlotly({ 
    plot_ly(selectedData(), 
      x = ~Sepal.Length, 
      y =~Sepal.Width, 
      color = ~Species) %>% 
     layout(showlegend = TRUE) 
    }) 
} 

shinyApp(ui = ui, server = server) 

Ausgabe von sessionInfo():

R version 3.3.2 (2016-10-31) 
Platform: x86_64-pc-linux-gnu (64-bit) 
Running under: Arch Linux 

locale: 
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C 
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C 
[9] LC_ADDRESS=C LC_TELEPHONE=C 
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C 

attached base packages: 
[1] stats graphics grDevices utils datasets methods base 

other attached packages: 
[1] plotly_4.5.6.9000 ggplot2_2.2.1.9000 shiny_1.0.0 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.9 magrittr_1.5 munsell_0.4.3 viridisLite_0.1.3 
[5] colorspace_1.3-2 xtable_1.8-2 R6_2.2.0 httr_1.2.1 
[9] plyr_1.8.4 dplyr_0.5.0 tools_3.3.2 grid_3.3.2 
[13] gtable_0.2.0 DBI_0.5-1 crosstalk_1.0.0 htmltools_0.3.5 
[17] yaml_2.1.14 lazyeval_0.2.0 digest_0.6.12 assertthat_0.1 
[21] tibble_1.2 tidyr_0.6.1 purrr_0.2.2 base64enc_0.1-3 
[25] htmlwidgets_0.8 mime_0.5 scales_0.4.1 jsonlite_1.3 
[29] httpuv_1.3.3 
+1

Ich habe den Code lokal auf meinem Mac Laptop getestet und ich die Legende Problem nicht reproduzieren kann. Getestet mit Chrome, Firefox und Safari. Meine Session: R Version 3.3.3 (2017.03.06), Plattform: x86_64-Apfel-darwin13.4.0 (64-Bit), Rennen unter: O X El Capitan 10.11.6, plotly_4.5.6, ggplot2_2.2.1, glänzend_1.0.0. – bdemarest

+0

@bdemarest hinzugefügt Klarstellung, dass das Problem nicht vorhanden ist, wenn lokal ausgeführt wird (mit 'runapp()'), aber nur, wenn Shiny Server. –

+0

Sollte wahrscheinlich auch die 'sessionInfo()' Daten enthalten. –

Antwort

0

Das Problem wird durch verschiedene Versionen von plotly-Paket für die üblichen und glänzenden Benutzer verursacht wurde. Shiny Server (standardmäßig mindestens) wird unter dem "glänzenden" Benutzer ausgeführt, aber wenn Sie die App lokal ausführen, wird sie unter Ihrem aktuellen Benutzer ausgeführt. Diese beiden Arten, die App auszuführen, verwendeten unterschiedliche Paketversionen.

Darüber hinaus ist das Problem nicht in der stabilen Version plotly (plotly_4.5.6) auf CRAN.