go.Contour doesn't render correctly in animation frames when multiple traces are present
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 18.8k
- Forks
- 2.8k
- Ø Merge
- 16 Std. 26 Min.
- Gemergte PRs (30 T.)
- 21
Beschreibung
I'm encountering an issue with plotly.graph_objects.Figure animations. When using go.Contour inside go.Frame along with additional traces such as go.Scatter, the contour plot no longer renders correctly during animation. However, if I only include the go.Contour trace by itself in each frame, it animates perfectly.
Here's a minimal reproducible example:
import plotly.io as pio
pio.renderers.default = 'browser'
import plotly.graph_objects as go
import numpy as np
z_base = np.array([
[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5., 8.125, 12.5],
[0.625, 1.25, 3.125, 6.25, 10.625],
[0, 0.625, 2.5, 5.625, 10]
])
lk_x=[0,0,1,1,0]
lk_y=[0,1,1,0,0]
data_line = go.Scatter(x=lk_x, y=lk_y, mode='lines', fill='toself', fillcolor='rgba(60, 53, 48, 0.5)', line_color='black', showlegend=False)
scales = np.linspace(0.2, 1.0, 10)
frames = []
for i, s in enumerate(scales):
z_scaled = z_base * s
frames.append(go.Frame(
data=[
go.Contour(
z=z_scaled,
colorbar=dict(
thickness=25,
thicknessmode='pixels',
len=0.6,
lenmode='fraction',
outlinewidth=0
)
,zorder=2
),
go.Scatter(
x=[0, 1, 2, 3, 4],
y=[0, 1, 1.5, 2, 3],
mode='lines',
line=dict(color='black', width=2),
showlegend=False,
zorder=0
),
data_line
],
name=f"scale_{i}"
))
fig = go.Figure(
data=frames[0].data,
frames=frames
)
fig.update_layout(
title="Contour",
updatemenus=[{
"buttons": [
{"label": "play", "method": "animate", "args": [None, {"frame": {"duration": 500}, "fromcurrent": True}]},
{"label": "pause", "method": "animate", "args": [[None], {"mode": "immediate", "frame": {"duration": 0}}]}
],
"type": "buttons",
"showactive": True,
"x": 0.1,
"y": -0.1
}],
sliders=[{
"steps": [{"args": [[f.name]], "label": f"Step {i+1}", "method": "animate"} for i, f in enumerate(frames)],
"x": 0.1,
"len": 0.9
}],
width=500,
height=500
)
fig.show()
only include the go.Contour trace:
with additional traces:
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Führe zunächst das bereitgestellte minimale Python-Beispiel in plotly.py aus und vergleiche die Animation mit ausschließlich go.Contour mit der Animation mit den zusätzlichen go.Scatter-Traces. Verfolge den von Figure und Frame für Konturdaten verwendeten Animations-/Rendering-Pfad; abgeschlossen ist die Aufgabe, wenn die Kontur während aller Frames korrekt gerendert wird, wenn mehrere Traces vorhanden sind, ohne den Fall mit einem einzelnen Trace zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- data-visualization
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100