plotly / plotly/plotly.js

[BUG]: `histogram2dcontour` uses wrong fill colors for negative values

Open
#8,005 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug P2 size: 1
Dominant language
JavaScript
Stars
18.3k
Forks
2k
Avg merge
2d 12h
Merged PRs (30d)
28

Description

First reported in plotly.py: https://github.com/plotly/plotly.py/issues/3799

histogram2dcontour traces use incorrect fill colors when bin values are negative.

Negative bin values can occur when histfunc is set to 'avg', 'min', or 'max', and the input z array contains negative values.

When some bin values are negative, all negative bin values are filled with the same color as 0 on the colorscale, while the outermost fill level is filled with the same color as the lowest number on the colorscale.

Example

Codepen reproduction: https://codepen.io/emilykl-code/pen/PwpPjMb

Code:

Show code
const x = [1, 2, 3, 4, 1, 2, 3, 4];
const y = [1, 1, 1, 1, 2, 2, 2, 2];
// The bug is triggered when histfunc is 'avg', 'min', or 'max',
// and some z-values are negative such that some resulting bin values
// end up negative
// This example uses all-negative z values to show the most extreme
// case, but not all z-values need to be negative to trigger the bug
const z = [-10, -50, -100, -150, -10, -50, -100, -150];

Plotly.newPlot('div1', [{
  type: 'histogram2dcontour',
  x: x,
  y: y,
  z: z,
  histfunc: 'avg',  // or 'min' or 'max'
  contours: {
    coloring: 'fill',
    showlabels: true,
  },
}],
 {
   title: {
     text: 'histogram2d contour plot: wrong fill colors!',
     subtitle: {
       text: 'Compare contour labels on plot to colorscale'
     }
 }
});

Screenshot:
Image

Expected behavior

Contour fills should match fill colors indicated by colorscale

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 provided CodePen reproduction for a histogram2dcontour trace using negative z values and histfunc set to avg, min, or max. Trace the histogram2dcontour rendering path and verify that negative-bin contour fills match their labels and the colorscale across all three functions.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.