plotly / plotly/plotly.py

[BUG]: contours.size initialization does not apply the specified value, but updates via dropdown work correctly

Ouverte
#5,613 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug good first issue good for agent P3 size: 1
Langage dominant
Python
Étoiles
18.8k
Forks
2.8k
Merge moyen
16 h 26 min
PR mergées (30 j)
21

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.25 being passed to the constructor.
Image
  • 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.
Image
Steps to reproduce
  1. Run the provided Python snippet using plotly.py.
  2. Observe the initial plot render: notice that the contour lines do not match a step size of 0.25.
  3. Click the dropdown menu at the top left of the figure.
  4. Select the "Contour Size: 0.25" option.
  5. 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.size value (as verified by the passing assert fig.data[0].contours.size == 0.25 statement).
  • The version of plotly.py is 6.8.0.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la reproduction Python fournie, en particulier go.Contour et l’affectation de contours.size, puis comparez le rendu initial avec le chemin restyle de layout updatemenus. Suivez l’endroit où la valeur du constructeur est transmise au rendu et vérifiez qu’un contours.size initial de 0.25 produit le même espacement des contours que la sélection de l’option de la liste déroulante.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
plotly, python
Domaine
data-visualization
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.