Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Inconsistent theme updates using `template`

Offen
#5,275 2 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
python

Rechercherichtung

Beginne damit, die Plotly Express- und graph-object-Beispiele mit template und update_layout zu reproduzieren, einschließlich des Falls mit explizitem colorscale. Vergleiche, wie Figure 2/3 und Figure 5/7 die Template-Einstellungen auflösen, und kläre anschließend, welches der beiden vorgeschlagenen Verhaltensweisen beabsichtigt ist. Als erledigt gilt die Aufgabe, wenn die akzeptierte Template-Update-Semantik über beide Schnittstellen hinweg konsistent ist und die dokumentierten Beispiele nicht mehr voneinander abweichen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

documentation feature P3

According to Theming and templates in Python, a figure can be created using a predefined template or updated to match it. However, the way updates happen is confusing if not inconsistent. Consider the examples below for plotly[express] == 6.2.0.

Plotly Express

import plotly.express as px

df = px.data.iris()

# uses the default `plotly` template
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="petal_length", title="Figure 1")
fig.show()

# update to use another template, note that the colour scale is unchanged
fig.update_layout(template="seaborn", title="Figure 2")
fig.show()

# this is not equivalent to Figure 2
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="petal_length", template="seaborn", title="Figure 3")
fig.show()

So Figure 3 is not the same as Figure 2, at least because the colour scales don't match. For custom themes, I can imagine that there may be other components of the figure object that would differ. As far as I know, there is no way to update traces using a template, e.g., fig.update_traces(template="seaborn"), to adjust non-layout settings.

Plotly Graph Object

To make things more confusing, there is a Specifying themes in graph object figures example in the documentation that does the same, but it actually works as expected. Adjusting the example we get:

import plotly.express as px
import plotly.graph_objects as go

df = px.data.iris()

# uses the default `plotly` template
fig = go.Figure(
    data=go.Scatter(
        x=df["sepal_width"],
        y=df["sepal_length"],
        mode="markers",
        marker={
            "color": df["petal_length"],
            "showscale": True,
        },
    )
)
fig.update_layout(title="Figure 4")
fig.show()

# update to use another template, note that the colour scale has changed as expected
fig.update_layout(template="seaborn", title="Figure 5")
fig.show()

However, specifying an explicit colorscale will prevent a template update from setting its own colour scheme:

# same as Figure 4 but with an explicit `colorscale`
fig = go.Figure(
    data=go.Scatter(
        x=df["sepal_width"],
        y=df["sepal_length"],
        mode="markers",
        marker={
            "color": df["petal_length"],
            "colorscale": "Viridis",  # or any other colour scale
            "showscale": True,
        },
    )
)
fig.update_layout(title="Figure 6")
fig.show()

# no longer matches Figure 5
fig.update_layout(template="seaborn", title="Figure 7")
fig.show()

Suggestions

  1. I would expect fig.update_layout(template="seaborn") to have the same effect, regardless of whether px or go interface is used. From this perspective, to result for Figure 2 is a bug (the colour scale should have changed for seaborn template).
  2. When an existing figure is updated, the settings from a template should take precedence over any existing settings. So Figure 5 and Figure 7 should produce the same result. This would entail that an update in Figure 7 overwrites whatever the colorscale setting Figure 6 has with that of a template provided in update_layout.
Vorherrschende Sprache
Python
Sterne
18.8k
Forks
2.8k
Ø Merge
13 Std. 28 Min.
Gemergte PRs (30 T.)
20

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus plotly/plotly.py

Alle Issues in plotly/plotly.py

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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