plotly / plotly/plotly.py

Bug: texttemplate and hovertemplate show inconsistent values when categoryarray is used in Heatmap

Open
#5,385 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
18.8k
Forks
2.8k
Avg merge
16h 26m
Merged PRs (30d)
21

Description

Minimal working example:
import plotly.graph_objects as go

z = [
    [1, None, 30, 50, 1],
    [20, 1, 60, 80, 30],
    [30, 60, 1, -10, 20]
]
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
y = ['Morning', 'Afternoon', 'Evening']

fig = go.Figure(
    data=go.Heatmap(
        z=z,
        x=x,
        y=y,
        text=z,
        texttemplate='%{x}<br>%{y}<br>%{text}',
        hovertemplate='%{x}<br>%{y}<br>%{text}<extra></extra>',
    )
)

# Reverse y-axis order
fig.update_layout(yaxis={'categoryarray': y[::-1]})
fig.show()
Expected behavior:
  • When the yaxis.categoryarray is reversed, both the heatmap cells and the text (%{text}) / hover labels should display the correctly corresponding values from z.
Actual behavior:
  • The axis ordering (x, y) updates correctly.

  • The visual placement of heatmap cells updates correctly.

  • However, %{text} in hovertemplate still correspond to the original unsorted order of z.

  • This leads to mismatched hover and text values after sorting by category.

Example:

After reversing the y axis, the heatmap looks right, but hovering over a cell labeled "Morning / Monday" still shows the value corresponding to "Evening / Monday" from the original order.

Additional note (text color rendering issue)

I also noticed that the text color changes incorrectly after sorting:

In the unsorted heatmap, cells like “Thursday / Evening” show white text on a dark blue background, which is legible and consistent.

After applying the categoryarray sort, the same cell (now visually repositioned) starts showing almost black text on the same dark background, making it nearly invisible.

This suggests that the automatic contrast adjustment for text color (based on cell background) may not update properly after the category sorting.

Version info
plotly.__version__
# 6.3.1
Image

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

Reproduce the issue with the minimal Python example using Plotly 6.3.1, including the reversed yaxis categoryarray. Trace how heatmap cell values, texttemplate, hovertemplate, and automatic text contrast are remapped after category sorting; done means the displayed values and text colors remain aligned with the repositioned cells.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.