plotly / plotly/plotly.py

Bug: leftover xaxis entries when toggling between buttons

Open
#4,849 2 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

Minimum Working Example (MWE):

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Data
option1_x = ['A', 'B', 'C']
option1_y1 = [1, 3, 2]
option1_y2 = [2, 4, 3]

option2_x = ['B', 'D', 'E']
option2_y1 = [2, 1, 4]
option2_y2 = [3, 2, 5]

# Create subplots
fig = make_subplots(rows=2, cols=1, shared_xaxes=True, subplot_titles=("y1", "y2"))

# Add traces for option1
fig.add_trace(go.Bar(x=option1_x, y=option1_y1, name="option1_y1"), row=1, col=1)
fig.add_trace(go.Bar(x=option1_x, y=option1_y2, name="option1_y2"), row=2, col=1)

# Add traces for option2
fig.add_trace(go.Bar(x=option2_x, y=option2_y1, name="option2_y1"), row=1, col=1)
fig.add_trace(go.Bar(x=option2_x, y=option2_y2, name="option2_y2"), row=2, col=1)

# Initially set option1 visible and option2 invisible
for trace in fig.data:
    trace.visible = False
fig.data[0].visible = True  # y1 option1
fig.data[1].visible = True  # y2 option1

# Add buttons
fig.update_layout(
    updatemenus=[
        {
            "type": "buttons",
            "buttons": [
                {
                    "label": "option1",
                    "method": "update",
                    "args": [
                        {"visible": [True, True, False, False]},  # Show only option1 traces
                    ]
                },
                {
                    "label": "option2",
                    "method": "update",
                    "args": [
                        {"visible": [False, False, True, True]},  # Show only option2 traces
                    ]
                }
            ],
            "showactive": True,
        }
    ],
)

fig.show()

Image

Toggling to option2, we can see the C xaxis entry (from option1) still showing (even with no data for it):

Image

This seems to only be an issue with subplots, and when the traces of different options have some xaxis labels in common (in this case B).

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 Python MWE and switching between the option1 and option2 buttons in the subplot figure. Inspect how shared x-axis entries are retained when traces are hidden and the options share the label B. Done means switching to option2 no longer displays the leftover C x-axis entry from option1.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.