python-visualization / python-visualization/branca

Should LinearColormap.to_step(n=1) create a one-step colormap?

Abierto
#222 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
134
Forks
69
Merge medio
1 h 10 min
PR fusionados (30 d)
1

Descripción

LinearColormap(...).to_step(n=1) raises a ZeroDivisionError.

In map/choropleth workflows, after filtering or classification, there may be only one bucket/class to display, and a one-step colormap seems semantically reasonable.

Currently, we get:

❯ uv run --with branca python
Python 3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import branca
>>> from branca.colormap import LinearColormap
>>> print(branca.__version__)
0.8.2
>>> 
>>> cm = LinearColormap(["red", "blue"], vmin=0, vmax=1)
>>> cm.to_step(n=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../branca/colormap.py", line 450, in to_step
    index[i] * (1.0 - i / (n - 1.0)) + index[i + 1] * i / (n - 1.0),
                      ~~^~~~~~~~~~~
ZeroDivisionError: float division by zero

The API says n is the expected number of colors in the output StepColormap. When no index/data is supplied it constructs a regular grid from n; later, it computes colors using n - 1.0, which fails at n=1.

Possibilities:

  • Could to_step(n=1) to return a StepColormap with one color/bin?
  • Or should n <= 1 be explicitly rejected with a clear ValueError?
  • Or a mention in the docs stating that callers need to special-case single-class data?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en branca/colormap.py alrededor de LinearColormap.to_step, donde el cálculo n - 1.0 falla para n=1, y reproduce el fallo del issue. Determina el comportamiento previsto para un único paso a partir de la API existente y de las pruebas circundantes; se considerará terminado cuando el comportamiento elegido esté implementado, claramente especificado y cubierto por una prueba de regresión.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
data-visualization
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
58/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.