plotly / plotly/plotly.R

Inconsistent behavior with numeric/non-numeric z values in heatmap

Open
#1,446 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

plotly.js priority: low
Dominant language
R
Stars
2.7k
Forks
641
PR merge metrics
No merged PRs in 30d

Description

Hi,
I have a problem with a plotly heatmap in a shiny app, it is ok in Chrome but wrong in Firefox (Windows 10). And it happens until you click the heatmap. Here is the built app where I got the problem: https://violetr.shinyapps.io/tidytuesdaytweets/. Any idea?

Code to generate an app with only the heatmap:

library(shiny)
library(plotly)
#> Loading required package: ggplot2
#> 
#> Attaching package: 'plotly'
#> The following object is masked from 'package:ggplot2':
#> 
#>     last_plot
#> The following object is masked from 'package:stats':
#> 
#>     filter
#> The following object is masked from 'package:graphics':
#> 
#>     layout
library(tidyverse)
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date

# Define UI for application that draws a histogram
ui <- shinyUI(fluidPage(

  # Application title
  title = "example_firefox",
  h2("The graph:"),
  plotlyOutput("distPlot", height = "160px", width = "550px"),
  hr()
))


server <- shinyServer(function(input, output) {
  all_dates_period <-
    tibble(gen_date = as_date(as_date("2018-04-01"):as_date("2018-12-22"))) %>%
    mutate(
      month_name = month(gen_date, TRUE),
      week_num = epiweek(gen_date), # to  start on Sun
      week_day = wday(gen_date, TRUE),
      n = 0
    )

  base_to_heatmap <- all_dates_period %>%
    select(-month_name, -gen_date)

  output$distPlot <- renderPlotly({
    to_heatmap <-
      base_to_heatmap %>%
      spread(key = week_num, value = n) %>%
      as.data.frame()

    matrix_heatmap <- as.matrix(to_heatmap)
    matrix_heatmap <- matrix_heatmap[ nrow(matrix_heatmap):1, ]

    mycols <- c("#ebedf0", "#c6e48b", "#7bc96f", "#239a3b", "#196127")
    mypalette <- colorRamp(mycols)
    library(plotly)
    plot_ly(
      z = matrix_heatmap,
      type = "heatmap",
      colors = mypalette, xgap = 0.5, ygap = 0.5,
      showscale = FALSE
    ) %>%
      layout(
        yaxis = list(
          ticks = "",
          # ticktext = lab_row_days,
          tickmode = "array",
          tickfont = list(color = "86888A"),
          tickvals = 0:6,
          zeroline = FALSE
        ),
        xaxis = list(
          side = "top",
          # ticktext = lab_column_months,
          ticks = "",
          tickmode = "array", tickangle = 0,
          tickfont = list(color = "86888A"),
          tickvals = 0:38,
          zeroline = FALSE
        )
      ) %>%
      config(displayModeBar = FALSE)
  })
})

# Run the application
shinyApp(ui = ui, server = server)

Shiny applications not supported in static R Markdown documents

Created on 2019-01-08 by the reprex package (v0.2.1)

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 with the minimal Shiny app in the issue and run its plot_ly heatmap reproduction in Chrome and Firefox. Focus on the matrix_heatmap passed as z and the differing behavior before and after clicking. Done means the supplied heatmap renders consistently without requiring a click.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
data-visualization, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.