Repository navigation
Open
Labels
P3backlogbacklogbugsomething brokensomething brokengood first issuesuitable for newcomerssuitable for newcomersgood for agentGood issue for an agent to solveGood issue for an agent to solvesize: 1
Description
Description
When initializing a go.Contour trace with a specific contours.size value (e.g., 0.25), the setting is ignored on the initial render, and Plotly defaults to an automatically calculated contour step size.
Interestingly, if the exact same parameter ("contours.size") is later updated dynamically via a layout updatemenus dropdown using the "restyle" method, the chart correctly updates and respects the specified size.
Screenshots/Video
- Initial Render (Buggy): The contours are spaced at default intervals despite
contours.size=0.25being passed to the constructor.
- After Selecting Dropdown (Expected): Selecting "Contour Size: 0.25" from the dropdown forces the chart to restyle, properly displaying the dense 0.25-step contour lines.
Steps to reproduce
- Run the provided Python snippet using
plotly.py. - Observe the initial plot render: notice that the contour lines do not match a step size of 0.25.
- Click the dropdown menu at the top left of the figure.
- Select the "Contour Size: 0.25" option.
- Notice that the plot immediately visualizes a much denser set of contours, behaving as it should have upon initialization.
import plotly
import plotly.graph_objects as go
print(f"Plotly version: {plotly.__version__}")
z_data = [
[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5.0, 8.125, 12.5],
[0.625, 1.25, 3.125, 6.25, 10.625],
[0, 0.625, 2.5, 5.625, 10],
]
fig = go.Figure(
data=go.Contour(
z=z_data,
contours=dict(size=0.25),
colorbar=dict(
title=dict(
text="Color bar title",
side="right",
font=dict(size=14, family="Arial, sans-serif"),
)
),
)
)
# This assertion passes, proving the property is registered in python-land
assert fig.data[0].contours.size == 0.25
fig.update_layout(
updatemenus=[
dict(
type="dropdown",
buttons=[
dict(
label="Contour Size: 0.25",
method="restyle",
args=[{"contours.size": 0.25}],
),
dict(
label="Contour Size: 1.0",
method="restyle",
args=[{"contours.size": 1.0}],
),
dict(
label="Contour Size: 2.0",
method="restyle",
args=[{"contours.size": 2.0}],
),
],
)
]
)
fig.show()Notes
- The internal Python object structure correctly holds the
contours.sizevalue (as verified by the passingassert fig.data[0].contours.size == 0.25statement). - The version of plotly.py is 6.8.0.
Metadata
Metadata
Assignees
Labels
P3backlogbacklogbugsomething brokensomething brokengood first issuesuitable for newcomerssuitable for newcomersgood for agentGood issue for an agent to solveGood issue for an agent to solvesize: 1
Activity
robertclaus commentedon Jun 17, 2026
Thanks for reporting this issue. This might be in
plotly.jsrather thanplotly.py. We think this might be a good first issue for a contributor since it's likely only a few lines missing somewhere and easily reproducible. Please feel free to open a PR!Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
Fix plotly#5613: Apply impliedEdits for contours initialization
yqtian-se commentedon Jun 21, 2026
Hi @robertclaus,
I am trying to fix this via #5631. If you do not mind, could you please take a look? Any comments would be appreciated.
robertclaus commentedon Aug 6, 2026
@yqtian-se thanks for opening the PR. Sorry it's taken us a while to get to it! We will try to look at it soon.
Fix plotly#5613: contours.size ignored on initialization