plotly / plotly/plotly.py

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

Offen
#5,613 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug good first issue good for agent P3 size: 1
Vorherrschende Sprache
Python
Sterne
18.8k
Forks
2.8k
Ø Merge
16 Std. 26 Min.
Gemergte PRs (30 T.)
21

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit der bereitgestellten Python-Reproduktion, insbesondere mit go.Contour und der Zuweisung von contours.size, und vergleichen Sie dann das anfängliche Rendering mit dem layout updatemenus restyle-Pfad. Verfolgen Sie, wo der Konstruktorwert an das Rendering übergeben wird, und überprüfen Sie, dass ein anfänglicher contours.size-Wert von 0.25 denselben Konturabstand erzeugt wie die Auswahl der Dropdown-Option.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
plotly, python
Bereich
data-visualization
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.