plotly.R icon indicating copy to clipboard operation
plotly.R copied to clipboard

Surface plot freezes when hovering on missing data and `connectgaps = TRUE`

Open gorkang opened this issue 3 years ago • 0 comments

Surface plot freezes when hovering on missing data when connectgaps = TRUE. It seems dependent on the size of the matrix.

Below, a reproducible example with different scenarios:

  1. Using the initial 15x14 matrix, the plot freezes when hovering in the bottom right corner, where the NA values are.
  2. With connectgaps = FALSE no more freezing
  3. Transposing the matrix also works
  4. Making the matrix a smaller also solves the issue

My original data is bigger, I searched for the smaller possible matrix where the problem occurred.

Thanks!

library(dplyr)
library(plotly)
DF_RAW = structure(c(181, 163, 60, 124, 76, 62, 73, 59, 17, 21, 26, 7, NA, NA, NA, 
                 188, 145, 61, 130, 61, 59, 62, 57, 20, 22, 22, 6, NA, NA, NA, 
                 137, 154, 54, 191, 75, 56, 65, 56, 22, 27, 33, 14, NA, NA, NA, 
                 126, 185, 65, 109, 51, 71, 57, 38, 25, 23, 21, 10, NA, NA, NA, 
                 150, 144, 44, 123, 58, 24, 48, 41, 19, 26, 21, 5, NA, NA, NA, 
                 138, 137, 61, 130, 67, 34, 60, 44, 19, 21, 16, 4, NA, NA, NA, 
                 121, 146, 101, 92, 70, 74, 88, 33, 18, 39, 24, 12, NA, NA, NA, 
                 NA, 160, 129, 117, 70, 61, 42, 35, 22, 25, 21, 7, 135, 23, 8, 
                 NA, 129, 130, 107, 64, 61, 44, 25, 23, 30, 18, 11, 140, 58, 40, 
                 NA, 136, 131, 96, 53, 31, 51, 37, 43, 31, 19, 2, 111, 73, 41, 
                 NA, 124, 154, 74, 62, 44, 34, 15, 26, 23, 20, 6, 113, 105, 19, 
                 NA, 126, 251, 76, 73, 84, 47, 40, 32, 25, 32, 6, 131, 106, 13, 
                 NA, 129, 194, 91, 53, 99, 46, 34, 60, 21, 17, 6, 148, 142, 26, 
                 NA, 115, 119, 88, 64, 108, 37, 24, 49, 26, 17, 6, 158, 151, 47), 
               .Dim = 15:14, 
               .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"), 
                                c("2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019")))

When hovering in the bottom right corner, where the big chunk of missing data is (connectgaps = TRUE), the plot freezes.


# Freezes when hovering  --------------------------------------------------

DF = DF_RAW
plotly::plot_ly(x = ~ colnames(DF),
                y = ~ rownames(DF),
                z = ~ DF) %>% 
  plotly::add_surface(connectgaps = TRUE)

Rplot2


If we use connectgaps = FALSE it does not freeze when hovering on bottom right corner

# WORKS  --------------------------------------------------

DF = DF_RAW
plotly::plot_ly(x = ~ colnames(DF),
                y = ~ rownames(DF),
                z = ~ DF) %>% 
  plotly::add_surface(connectgaps = FALSE)

If we transpose the DF it does not freeze when hovering on bottom left corner (where chunk of missing data is now)

# WORKS  --------------------------------------------------

DF = t(DF_RAW)
plotly::plot_ly(x = ~ colnames(DF),
                y = ~ rownames(DF),
                z = ~ DF) %>% 
  plotly::add_surface(connectgaps = TRUE)

If we make the matrix a tad smaller, the DF it does not freeze when hovering on bottom right corner. I tried this with different sets of data. It seems freezing occurs when the matrix is > 14x14 and connectgaps = TRUE

# WORKS  --------------------------------------------------

DF = DF_RAW[1:14,]
plotly::plot_ly(x = ~ colnames(DF),
                y = ~ rownames(DF),
                z = ~ DF) %>% 
  plotly::add_surface(connectgaps = TRUE)

Created on 2022-04-25 by the reprex package (v2.0.1)

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.1.3 (2022-03-10)
#>  os       Ubuntu 20.04.4 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Atlantic/Canary
#>  date     2022-04-25
#>  pandoc   2.17.1.1 @ /usr/lib/rstudio/bin/quarto/bin/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version     date (UTC) lib source
#>  assertthat    0.2.1       2019-03-21 [1] CRAN (R 4.1.0)
#>  callr         3.7.0       2021-04-20 [1] CRAN (R 4.1.0)
#>  cli           3.2.0       2022-02-14 [1] CRAN (R 4.1.2)
#>  colorspace    2.0-3       2022-02-21 [1] CRAN (R 4.1.2)
#>  crayon        1.5.1       2022-03-26 [1] CRAN (R 4.1.3)
#>  crosstalk     1.2.0       2021-11-04 [1] CRAN (R 4.1.2)
#>  curl          4.3.2       2021-06-23 [1] CRAN (R 4.1.0)
#>  data.table    1.14.2      2021-09-27 [1] CRAN (R 4.1.1)
#>  DBI           1.1.2       2021-12-20 [1] CRAN (R 4.1.2)
#>  digest        0.6.29      2021-12-01 [1] CRAN (R 4.1.2)
#>  dplyr       * 1.0.8       2022-02-08 [1] CRAN (R 4.1.2)
#>  ellipsis      0.3.2       2021-04-29 [1] CRAN (R 4.1.0)
#>  evaluate      0.15        2022-02-18 [1] CRAN (R 4.1.2)
#>  fansi         1.0.3       2022-03-24 [1] CRAN (R 4.1.3)
#>  farver        2.1.0       2021-02-28 [1] CRAN (R 4.1.0)
#>  fastmap       1.1.0       2021-01-25 [1] CRAN (R 4.1.0)
#>  fs            1.5.2       2021-12-08 [1] CRAN (R 4.1.2)
#>  generics      0.1.2       2022-01-31 [1] CRAN (R 4.1.2)
#>  ggplot2     * 3.3.5       2021-06-25 [1] CRAN (R 4.1.0)
#>  glue          1.6.2       2022-02-24 [1] CRAN (R 4.1.2)
#>  gtable        0.3.0       2019-03-25 [1] CRAN (R 4.1.0)
#>  highr         0.9         2021-04-16 [1] CRAN (R 4.1.0)
#>  htmltools     0.5.2       2021-08-25 [1] CRAN (R 4.1.1)
#>  htmlwidgets   1.5.4       2021-09-08 [1] CRAN (R 4.1.1)
#>  httr          1.4.2       2020-07-20 [1] CRAN (R 4.1.0)
#>  jsonlite      1.8.0       2022-02-22 [1] CRAN (R 4.1.2)
#>  knitr         1.38        2022-03-25 [1] CRAN (R 4.1.3)
#>  lazyeval      0.2.2       2019-03-15 [1] CRAN (R 4.1.0)
#>  lifecycle     1.0.1       2021-09-24 [1] CRAN (R 4.1.1)
#>  magrittr      2.0.3       2022-03-30 [1] CRAN (R 4.1.3)
#>  mime          0.12        2021-09-28 [1] CRAN (R 4.1.1)
#>  munsell       0.5.0       2018-06-12 [1] CRAN (R 4.1.0)
#>  pillar        1.7.0       2022-02-01 [1] CRAN (R 4.1.2)
#>  pkgconfig     2.0.3       2019-09-22 [1] CRAN (R 4.1.0)
#>  plotly      * 4.10.0.9001 2022-04-25 [1] Github (plotly/plotly@01582b8)
#>  processx      3.5.3       2022-03-25 [1] CRAN (R 4.1.3)
#>  ps            1.7.0       2022-04-23 [1] CRAN (R 4.1.3)
#>  purrr         0.3.4       2020-04-17 [1] CRAN (R 4.1.0)
#>  R.cache       0.15.0      2021-04-30 [1] CRAN (R 4.1.0)
#>  R.methodsS3   1.8.1       2020-08-26 [1] CRAN (R 4.1.0)
#>  R.oo          1.24.0      2020-08-26 [1] CRAN (R 4.1.0)
#>  R.utils       2.11.0      2021-09-26 [1] CRAN (R 4.1.1)
#>  R6            2.5.1       2021-08-19 [1] CRAN (R 4.1.1)
#>  reprex        2.0.1       2021-08-05 [1] CRAN (R 4.1.0)
#>  rlang         1.0.2       2022-03-04 [1] CRAN (R 4.1.2)
#>  rmarkdown     2.13        2022-03-10 [1] CRAN (R 4.1.2)
#>  rstudioapi    0.13        2020-11-12 [1] CRAN (R 4.1.0)
#>  scales        1.2.0       2022-04-13 [1] CRAN (R 4.1.3)
#>  sessioninfo   1.2.2       2021-12-06 [1] CRAN (R 4.1.2)
#>  stringi       1.7.6       2021-11-29 [1] CRAN (R 4.1.2)
#>  stringr       1.4.0       2019-02-10 [1] CRAN (R 4.1.0)
#>  styler        1.7.0       2022-03-13 [1] CRAN (R 4.1.2)
#>  tibble        3.1.6       2021-11-07 [1] CRAN (R 4.1.2)
#>  tidyr         1.2.0       2022-02-01 [1] CRAN (R 4.1.2)
#>  tidyselect    1.1.2       2022-02-21 [1] CRAN (R 4.1.2)
#>  utf8          1.2.2       2021-07-24 [1] CRAN (R 4.1.0)
#>  vctrs         0.4.1       2022-04-13 [1] CRAN (R 4.1.3)
#>  viridisLite   0.4.0       2021-04-13 [1] CRAN (R 4.1.0)
#>  webshot       0.5.3       2022-04-14 [1] CRAN (R 4.1.3)
#>  withr         2.5.0       2022-03-03 [1] CRAN (R 4.1.2)
#>  xfun          0.30        2022-03-02 [1] CRAN (R 4.1.2)
#>  xml2          1.3.3       2021-11-30 [1] CRAN (R 4.1.2)
#>  yaml          2.3.5       2022-02-21 [1] CRAN (R 4.1.2)
#> 
#>  [1] /home/emrys/R/x86_64-pc-linux-gnu-library/4.1
#>  [2] /usr/local/lib/R/site-library
#>  [3] /usr/lib/R/site-library
#>  [4] /usr/lib/R/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────

gorkang avatar Apr 25 '22 08:04 gorkang