plotly / plotly/plotly.R

ggplotly ignores na.value colour (e.g.: in scale_fill_gradientn and others) [bug]

Open
#1,149 4 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ggplotly
Dominant language
R
Stars
2.7k
Forks
641
PR merge metrics
No merged PRs in 30d

Description

Code to replicate the bug:

library(ggplot2)
library(plotly)
library(viridis)

# If you want to draw arbitrary rectangles, use geom_tile() or geom_rect()
df <- data.frame(
  x = rep(c(2, 5, 7, 9, 12), 2),
  y = rep(c(1, 2), each = 5),
  z = rep(c(1:4, NA), each = 2)
)
p <- ggplot(df, aes(x, y)) +
  geom_tile(aes(fill = z)) + 
  scale_fill_gradientn(
    colors = viridis(256),
    na.value = "red")
p
ggplotly(p)

Output in ggplot2:

image

But this is how it looks in plotly:

image

This is the cause of https://github.com/talgalili/heatmaply/issues/122

I've used this in the latest cutting edge ggplot2 and plotly


> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=Hebrew_Israel.1255  LC_CTYPE=Hebrew_Israel.1255   
[3] LC_MONETARY=Hebrew_Israel.1255 LC_NUMERIC=C                  
[5] LC_TIME=Hebrew_Israel.1255    

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

other attached packages:
[1] viridis_0.4.0      viridisLite_0.2.0  plotly_4.7.1.9000  ggplot2_2.2.1.9000
[5] installr_0.20.0    stringr_1.2.0     

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.13        compiler_3.4.1      git2r_0.18.0       
 [4] plyr_1.8.4          bindr_0.1           tools_3.4.1        
 [7] digest_0.6.12       jsonlite_1.5        memoise_1.1.0      
[10] tibble_1.3.4        gtable_0.2.0        pkgconfig_2.0.1    
[13] rlang_0.1.4         shiny_1.0.3         crosstalk_1.0.0    
[16] yaml_2.1.14         curl_2.7            bindrcpp_0.2       
[19] gridExtra_2.2.1     withr_2.1.0.9000    httr_1.3.1         
[22] dplyr_0.7.4.9000    knitr_1.16          htmlwidgets_0.9    
[25] devtools_1.13.2     grid_3.4.1          tidyselect_0.2.3   
[28] glue_1.2.0          data.table_1.10.4-3 R6_2.2.2           
[31] purrr_0.2.4         tidyr_0.7.2         magrittr_1.5       
[34] scales_0.5.0.9000   htmltools_0.3.6     assertthat_0.2.0   
[37] xtable_1.8-2        mime_0.5            colorspace_1.3-2   
[40] httpuv_1.3.5        labeling_0.3        stringi_1.1.5      
[43] lazyeval_0.2.1      munsell_0.4.3      

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the reported ggplot2 and ggplotly reproduction with the gradient scale and NA values. Compare the rendered colors and trace the conversion path from ggplot2 to plotly; done means ggplotly preserves the configured red na.value, with coverage for the reported case.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
data-visualization
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.