XY es una biblioteca de gráficos para Python, aún en fase alpha, desarrollada por el equipo de Reflex. Está diseñada para funcionar de forma fluida en entornos muy distintos: cuadernos Jupyter, aplicaciones web y exportaciones estáticas en HTML, PNG, SVG o PDF. Su núcleo, escrito en Rust, envía al navegador únicamente los píxeles necesarios en función de la resolución de pantalla, lo que permite manejar desde unos pocos miles de puntos hasta conjuntos de datos masivos. Como ejemplo, los autores afirman haber renderizado la totalidad de OpenStreetMap, un dataset de 10.000 millones de puntos, manteniendo pan, zoom, hover y selección con detalle completo.
La API admite dos estilos de uso: uno declarativo, basado en composición de marcas dentro de un contenedor, y otro compatible con las convenciones de Matplotlib mediante xy.pyplot. Cada elemento visual puede personalizarse desde Python, CSS o Tailwind, incluyendo colores, tamaños, opacidad, gradientes, leyendas, anotaciones y temas. La interacción incluye pan, zoom, hover, selección, crosshairs, callbacks y gráficos enlazados.
En las pruebas publicadas, XY mantiene un tiempo de renderizado prácticamente constante: 0,071 s con 10.000 puntos y 0,081 s con 100 millones, gracias a que por encima de 200.000 filas dibuja una superficie de densidad acotada por pantalla en lugar de un marcador por fila. Matplotlib y Plotly, en cambio, superan el segundo de renderizado a partir de 3 y 2,5 millones de puntos respectivamente, y no completan figuras de 50 millones (Plotly) o 100 millones (Matplotlib). El consumo de memoria en el lado Python también es entre 1,7 y 2,9 veces menor que el de Matplotlib y Plotly en los rangos comparados. El adaptador reflex-xy integra cualquier gráfico XY como componente de Reflex sin JavaScript ni iframes adicionales.
