[BUG] Data in `px.imshow` disappears at default zoom, reappears when zooming in with dense data
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.8k
- Merge medio
- 16 h 26 min
- PR fusionados (30 d)
- 21
Descripción
Environment
Plotly Version: 6.1.2
Operating System: Windows 10 22H2 19045.5854 Windows Feature Experience Pack 1000.19061.1000.0
Browser: Chrome 137.0.7151.41
When trying to visualize dense binary time-series data (e.g., 10 channels over 4,000+ time points), both px.imshow and px.timeline fail to render the data correctly in the default, zoomed-out view. The areas that should contain data appear blank.
However, if you manually zoom into any region of the plot, the data correctly appears. Resetting the zoom causes the data to disappear again. This suggests the issue is not with the data itself, but with the rendering engine's handling of very thin graphical elements (heatmap cells or gantt bars) at a low zoom level.
Here is my origin data.
BAO_spikes_sorted_output.csv
Here is my html.(Please change the suffix to html)
Here is my code.
def plot_binary_heatmap(csv_file="./data/down/combined_binary.csv", title="Binary Heatmap of Signals"):
"""
Reads data from a combined binary CSV, processes filenames, and plots a heatmap.
The x-axis represents time in seconds, and the y-axis represents file numbers in ascending order.
"""
df = pd.read_csv(csv_file)
# 1. Extract the time column (keep as float)
if 'Time' in df.columns:
time = df['Time'].astype(float)
df = df.drop(columns=['Time'])
elif 'time' in df.columns:
time = df['time'].astype(float)
df = df.drop(columns=['time'])
else:
# If no time column exists, create an index
time = pd.Series(range(df.shape[0]))
# 2. Transpose: each row is a file, each column is a time point
df_t = df.T
df_t.index.name = "File"
# Update index, keep only the part before "_"
df_t.index = df_t.index.to_series().str.split('_').str[0]
# 3. Set time as column names (keep as float)
df_t.columns = time
z = df_t.to_numpy()
y_labels = df_t.index.tolist()
x_values = df_t.columns.to_numpy()
# 4. Create the heatmap
fig = px.imshow(
z,
labels=dict(x="Time (s)", y="Channel", color="Binary"),
x=x_values,
y=y_labels,
color_continuous_scale=["#ffffff", "#000000"],
aspect="auto",
title=title
)
# 5. Update chart layout
fig.update_layout(
xaxis_title="Time (s)",
yaxis_title="Channel",
height=600,
width=1000,
)
fig.write_html(f"{title}.html")
plot_binary_heatmap(csv_file="BAO_spikes_sorted_output.csv", title="BAO Spike Heatmap")
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo el informe con el archivo adjunto BAO_spikes_sorted_output.csv, el ejemplo de Python px.imshow proporcionado y Plotly 6.1.2, comparando la vista predeterminada con una vista ampliada. Se considera completado cuando los datos densos del mapa de calor binario siguen siendo visibles sin hacer zoom manualmente y el comportamiento se ha verificado con el caso proporcionado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- plotly, python
- Área
- data-visualization
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 35/100