Scattergl points disappear when reaching a certain threshold in size difference
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 18.8k
- Fork
- 2.8k
- Merge medio
- 16h 26m
- PR unite (30g)
- 21
Descrizione
I noticed, that in Scattergl points start to disappear from the graph when resizing and reaching certain thresholds in size difference.
Minimal example:
from dash import Dash, html, dcc, callback
from dash.dependencies import Input, Output
import plotly.graph_objects as go
from plotly.graph_objs import Scattergl
import numpy as np
import pandas as pd
np.random.seed(41)
x = np.random.uniform(-10, 10, 10)
y = np.random.uniform(-10, 10, 10)
sizes = np.random.uniform(0, 1000, 10)
df = pd.DataFrame({
'x': x,
'y': y,
'sizes': sizes
})
app = Dash(__name__)
app.layout = html.Div([
dcc.Slider(min=13, max=14, value=1, id='slider-sizes', step=0.1),
dcc.Graph(id='graph', style={"width": "100vw", "height": "80vh"}),
])
def update_marker_sizes(fig, size):
for trace in fig.data:
if 'marker' in trace and 'size' in trace.marker:
trace.marker.size = [s * size for s in trace.marker.size]
return fig
@callback(
Output('graph', 'figure'),
Input('slider-sizes', 'value')
)
def update_graph(size):
figure = go.Figure(data=Scattergl(x=df["x"], y=df["y"], mode='markers',
marker=dict(size=df['sizes']*size, sizemode='area')))
print(f"{50*'-'}\nslider size:{size}")
num_points = sum(
len(trace['x']) for trace in figure.full_figure_for_development()['data'] if
len(trace["x"]) > 1)
print(f"num points in dev data (x): {num_points}")
minsize, maxsize = float("inf"), float("-inf")
for trace in figure.data:
if hasattr(trace, 'marker') and hasattr(trace.marker, 'size'):
if len(trace.marker.size) > 1:
print(f"num points in data: {len(trace.marker.size)}")
minsize = min(minsize, min(trace.marker.size))
maxsize = max(maxsize, max(trace.marker.size))
print(f"min: {minsize}, max: {maxsize}, diff: {maxsize - minsize}")
return figure
if __name__ == '__main__':
app.run_server(debug=True, port=8000)
The points are still present in the underlying data structure:
Output:
--------------------------------------------------
slider size:13.5
num points in dev data (x): 10
num points in data: 10
min: 1350.4235691765416, max: 10008.250444470288, diff: 8657.826875293747
--------------------------------------------------
slider size:13.6
num points in dev data (x): 10
num points in data: 10
min: 1360.4267067259975, max: 10082.385632947846, diff: 8721.958926221849
--------------------------------------------------
slider size:13.5
num points in dev data (x): 10
num points in data: 10
min: 1350.4235691765416, max: 10008.250444470288, diff: 8657.826875293747
--------------------------------------------------
Visually, this is what happens:
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo l’esempio minimo di Dash riportato nell’issue e variando lo slider intorno alle soglie di dimensione segnalate. Traccia il percorso di rendering di Scattergl per determinare perché i punti scompaiono nonostante rimangano nei dati, quindi verifica che tutti i punti restino visibili nell’intero intervallo di dimensioni che riproduce il problema.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- data-visualization
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100