3 puntos por GN⁺ 2023-07-16 | 1 comentarios | Compartir por WhatsApp
  • 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

1 comentarios

 
GN⁺ 2023-07-16
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 Python

    • Me pregunto si ggplot2 es lo suficientemente general como para crear cualquier gráfico que uno quiera, o si más bien tiene un estilo muy marcado en cuanto a la forma o los tipos de gráficos que permite hacer. Dicho eso, quizá lo mejor de esta biblioteca es que también se puede usar en Kotlin
  • La 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

    • Buen video. Muestra bien que R aporta expresividad adicional en la explicación y la visualización. En vez de aprender otro wrapper de gráficos para Python, quizá convenga más aprender un poco de R
    • Es cierto que Copilot ayuda bien con la semántica y las opciones de ggplot basadas en R, pero no creo que ese tipo de diferencias sean un gran obstáculo para los modelos de lenguaje grandes. Si intentas convertir scripts de un lenguaje a otro, puedes ver qué tan bien generalizan los modelos de lenguaje grandes, aunque claro, no es perfecto
      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ón
    Estaría bien poder portar o reimplementar ggthemes, scientificplots [1] y otras bibliotecas de ggplot en lets-plot
    0: 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?

    • El simple hecho de que pueda hacer gráficos estadísticos y no esté basada en matplotlib ya es un buen comienzo. Plotly es complicado, Altair no tiene muy buena usabilidad, y bokeh tiene el mismo estilo imperativo que matplotlib además de ser algo pesado
      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í
    • Parece que lo hicieron para usarlo en los nuevos Kotlin Notebooks de JetBrains
    • Todo el mundo lo quiere. Todas las alternativas tienen grandes desventajas, así que más competencia es algo bueno
  • ¿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?

  • 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

  • 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? pygg es una biblioteca ligera que convierte la sintaxis ggplot de Python en código de R ggplot2
    La 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

    • Independientemente de los defectos que tenga ggplot, ni matplotlib, ni base R, ni ninguna otra biblioteca de gráficos me ha permitido hacer gráficos a una velocidad cercana a la de lo que escribo al teclear. En ggplot eso es posible sin mucha ayuda
      En matplotlib, solo recientemente, usándolo mucho e incluso con GitHub Copilot, he podido acercarme a eso
    • scale no es exactamente una función, porque para dibujar ejes y leyendas también se necesita una función inversa. Y, de hecho, la mayor parte de la complejidad real de scale viene de los ejes y las leyendas