- Lets-Plot es una biblioteca de gráficos multiplataforma basada en los principios de Grammar of Graphics que permite la visualización de datos estadísticos en Python y Kotlin
- Ofrece implementaciones separadas para Python y Kotlin, por lo que puede usarse desde entornos de notebook hasta IDEs y desarrollo de apps, adaptándose a el flujo de trabajo de cada ecosistema
- En Python, los gráficos pueden verse no solo en notebooks, sino también en SciView de PyCharm y IntelliJ IDEA
- En Kotlin, apunta a casos de uso de visualización que van desde notebooks de Kotlin hasta apps Compose-Multiplatform
- Incluye geocodificación, gráficos con GeoDataFrame y personalización de tooltips y anotaciones, por lo que también puede usarse para datos espaciales y para crear gráficos interactivos
Descripción general de Lets-Plot
- Lets-Plot es una biblioteca de gráficos multiplataforma basada en los principios de Grammar of Graphics
- Si quieres aprender ggplot2 y Grammar of Graphics al mismo tiempo, se recomienda como material de referencia “ggplot2: Elegant Graphics for Data Analysis” de Hadley Wickham
- Los materiales para comenzar y los ejemplos están disponibles en las siguientes rutas
Plataformas compatibles y funciones principales
-
Python
- Es una biblioteca de visualización para Python ofrecida como Grammar of Graphics for Python
- Puede usarse en notebooks de Python
- Los gráficos también pueden verse en SciView de los IDEs PyCharm e IntelliJ IDEA
-
Kotlin
- Es una biblioteca de visualización multiplataforma para Kotlin ofrecida como Grammar of Graphics for Kotlin
- Está orientada a casos de uso dentro del ecosistema Kotlin, desde notebooks de Kotlin hasta apps Compose-Multiplatform
-
Visualización geoespacial
- Con el módulo de Geocoding se pueden encontrar objetos espaciales
- Si ya tienes un
GeoDataFrame, puedes graficarlo directamente
-
Tooltips y anotaciones
- Se pueden personalizar el contenido, el formato de los valores y la apariencia de los tooltips y las annotations de las capas del gráfico
1 comentarios
Opiniones de Hacker News
Está genial. Parece estar basado en la gramática de gráficos al estilo ggplot2. Se pueden ver ejemplos aquí: https://lets-plot.org/pages/charts.html
Los gráficos de datos también se ven bastante bien: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
Los gráficos de distribución igual: https://lets-plot.org/pages/charts.html#visualization-of-dis...
Me pregunto cómo se compara este proyecto con
plotnine, la biblioteca de gráficos estilo ggplot2 para PythonLa desventaja de las bibliotecas tipo ggplot en lenguajes que no son R es que se pierde la enorme cantidad de excelentes bibliotecas complementarias[1] disponibles en el original. En lo personal, hago mucho procesamiento de datos en Python, luego exporto a R, y hago todos los gráficos ahí
Siento que la gente de estadística le da más importancia a los gráficos y dedica más tiempo a pulirlos. Además, Copilot ayuda muy bien con la semántica y las opciones de ggplot basadas en R porque tiene mucho material del que aprender. No sé si pasará lo mismo con las diferencias sutiles de las bibliotecas que lo replican
[1] https://youtu.be/7UjA_5gNvdw
Si se les da suficiente contexto, probablemente produzcan resultados bastante útiles
Esto también se ve bastante parecido a
plotnine[0], que ofrece una interfaz de gramática de gráficos para Python. Aun así, me gusta ggplot y espero con ganas el día en que pueda usar esto en investigaciónEstaría bien poder portar o reimplementar
ggthemes,scientificplots[1] y otras bibliotecas de ggplot en lets-plot0: https://plotnine.readthedocs.io/en/stable/
1: https://github.com/garrettj403/SciencePlots
No entiendo por qué hace falta. ¿De verdad alguien estaba buscando con tanta urgencia otra biblioteca de gráficos?
Seaborn está bien, pero igual hay que lidiar con la abstracción con fugas que tiene encima de matplotlib, así que combinar cosas se vuelve más difícil y también cuesta conseguir interactividad. Por eso yo sí quiero algo así. Quiero buenos gráficos interactivos que se sientan rápidos y nativos; incluso intenté hacer uno por mi cuenta. Ggplot te deja concentrarte solo en lo que quieres dibujar y pasarle un dataframe, y esto también parece ir por ahí
¿Hay algún tutorial o guía centrado en Python para crear gráficos con este enfoque de gramática de gráficos? ¿O hay que leer el libro de ggplot2 e ir pasando los ejemplos de R a Python?
https://vega.github.io/vega/docs/
Todo está hecho en Kotlin Multiplatform y solo le ponen encima un wrapper delgado para Python. Bastante sorprendente
El mayor problema de las bibliotecas de gráficos era que no manejaban bien cientos de millones de puntos de datos de inmediato. En mi último proyecto de ciencia de datos probé todas las bibliotecas de gráficos principales, pero ninguna funcionaba correctamente al pasar de unos cuantos millones de puntos
Quería gráficos que se pudieran visualizar en tiempo real y hacer zoom, y esa terminó siendo la parte difícil del proyecto. Solo un producto decía poder hacerlo con GPU en la nube, pero requería una suscripción de pago y subir los datos a la nube. No quería otra biblioteca más, sino una que de verdad funcionara bien y pudiera aprovechar la GPU local para graficar
Si bajas a la sección de ejemplos, hay gráficos con muchísimos puntos: https://wwwtyro.github.io/candygraph/examples/dist/
https://github.com/epezent/implot
Java: https://github.com/SpaiR/imgui-java
También hay para Rust:
https://www.egui.rs/#Demo
Basta con ver la demo de Open Plot. En la web, probablemente bastaría con compilarlo a WASM. Parece que se podría hacer solo la parte del gráfico en WASM e incrustarla en el DOM existente
https://github.com/holoviz/datashader es una opción decente en el ecosistema de Python
ggplot2 es excelente para explorar datos. En su momento fue una ventaja verdaderamente única de R
Para dashboards prefiero más Apache ECharts:
https://github.com/ecomfe/awesome-echarts
Está realmente genial. ¿Esto es una reimplementación de ggplot2 en Python?
pygges una biblioteca ligera que convierte la sintaxis ggplot de Python en código de R ggplot2La desventaja es que no es interactiva y se ejecuta en R; la ventaja es que ejecuta la implementación de ggplot de Hadley en R
https://github.com/sirrice/pygg
A mí me decepciona un poco que básicamente copiara ggplot. ggplot no es la respuesta definitiva al diseño de bibliotecas de visualización
Por ejemplo, ggplot tiene el concepto de escala, que corresponde exactamente a una función. Eso solo añade complejidad conceptual innecesaria a la biblioteca. Quitar eso sería una mejora sencilla
En matplotlib, solo recientemente, usándolo mucho e incluso con GitHub Copilot, he podido acercarme a eso