3 pontos por GN⁺ 2023-07-16 | 1 comentários | Compartilhar no WhatsApp
  • Lets-Plot é uma biblioteca de plotagem multiplataforma que oferece suporte à visualização de dados estatísticos em Python e Kotlin com base nos princípios da Grammar of Graphics
  • Com implementações separadas para Python e Kotlin, pode ser usada de ambientes de notebooks a IDEs e desenvolvimento de apps, de acordo com os fluxos de trabalho de cada ecossistema
  • Em Python, além de notebooks, também é possível visualizar plots no SciView do PyCharm e do IntelliJ IDEA
  • Em Kotlin, mira casos de uso de visualização que vão de notebooks Kotlin a apps Compose-Multiplatform
  • Oferece geocodificação, plotagem de GeoDataFrame e customização de tooltips e anotações, podendo ser usada também para dados espaciais e construção de plots interativos

Visão geral do Lets-Plot

Plataformas compatíveis e principais recursos

1 comentários

 
GN⁺ 2023-07-16
Opiniões no Hacker News
  • Legal. Parece ser baseado na gramática de gráficos no estilo ggplot2. Dá para ver exemplos aqui: https://lets-plot.org/pages/charts.html
    Os gráficos de dados também parecem bem bons: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
    O mesmo vale para os gráficos de distribuição: https://lets-plot.org/pages/charts.html#visualization-of-dis...
    Fico curioso para saber como este projeto se compara ao plotnine, uma biblioteca de plotagem em Python no estilo ggplot2

    • Fico curioso se o ggplot2 é genérico o bastante para criar qualquer gráfico que se queira, ou se ele tem uma personalidade forte quanto às formas ou tipos de gráficos que permite criar. Dito isso, talvez o melhor desta biblioteca seja poder usá-la também em Kotlin
  • A desvantagem das bibliotecas da família ggplot em linguagens que não sejam R é que você perde a enorme quantidade de excelentes bibliotecas de add-ons[1] disponíveis no original. Pessoalmente, faço bastante processamento de dados em Python, depois exporto para R e faço todos os gráficos lá
    Tenho a impressão de que o pessoal de estatística dá mais importância aos gráficos e dedica mais tempo a deixá-los bem acabados. Além disso, como há muito material para aprender, o Copilot ajuda muito bem com a semântica e as opções do ggplot baseado em R. Não sei se ele se sairia tão bem com as diferenças sutis das bibliotecas que clonam o ggplot
    [1] https://youtu.be/7UjA_5gNvdw

    • É um bom vídeo. Mostra bem como R dá expressividade adicional na explicação e visualização. Talvez valha mais a pena aprender um pouco de R do que aprender mais um wrapper de plotagem em Python
    • É verdade que o Copilot ajuda bem com a semântica e as opções do ggplot baseado em R, mas acho que esse tipo de diferença não seria um grande obstáculo para modelos de linguagem grandes. Se você tentar converter scripts de uma linguagem para outra, dá para ver como modelos de linguagem grandes generalizam bem, embora não sejam perfeitos
      Com contexto suficiente, é bem provável que produzam resultados utilizáveis
  • Isto também parece bem parecido com o plotnine [0], que oferece uma interface de gramática de gráficos para Python. Ainda assim, gosto de ggplot e estou ansioso pelo dia em que poderei usar isto em pesquisa
    Seria ótimo se ggthemes, scientificplots [1] e outras bibliotecas ggplot pudessem ser portadas ou reimplementadas para lets-plot
    0: https://plotnine.readthedocs.io/en/stable/
    1: https://github.com/garrettj403/SciencePlots

  • Não entendo por que isso é necessário. Alguém estava desesperadamente procurando mais uma biblioteca de plotagem?

    • Só o fato de permitir criar gráficos estatísticos e não ser baseada em matplotlib já é um bom começo. Plotly é complicada, Altair não é muito usável, e bokeh tem o mesmo estilo imperativo do matplotlib, além de ser meio pesada
      Seaborn é boa, mas você ainda precisa lidar com a abstração vazada em cima do matplotlib, o que dificulta a composição, e também é difícil conseguir interatividade. Então eu quero algo assim. Já tentei até criar algo próprio porque queria gráficos interativos bons, rápidos e com sensação nativa. Ggplot permite focar apenas no que você quer desenhar e passar um dataframe, e isto também parece fazer isso
    • Parece que foi feita para ser usada nos novos Kotlin Notebooks da JetBrains
    • Todo mundo quer. As alternativas têm grandes desvantagens, então mais concorrência é bom
  • Existe algum tutorial ou guia centrado em Python para criar plots usando essa abordagem de gramática de gráficos? Ou preciso ler o livro do ggplot2 e converter os exemplos em R para Python?

  • É tudo Kotlin Multiplatform, com apenas um wrapper fino em Python por cima. Bem surpreendente

  • O maior problema das bibliotecas de plotagem era que elas não lidavam bem, de imediato, com milhões de pontos de dados. No meu último projeto de ciência de dados, testei todas as principais bibliotecas de plotagem, mas nenhuma funcionava direito quando passava de alguns milhões de pontos
    Eu queria gráficos que pudessem ser visualizados em tempo real e com zoom in/out, e isso virou a parte difícil do projeto. Um produto dizia conseguir processar isso com GPU na nuvem, mas exigia assinatura paga e o envio dos dados para a nuvem. Eu não queria mais uma biblioteca; queria uma que funcionasse realmente bem e conseguisse usar a GPU local para plotagem

  • ggplot2 é excelente para exploração de dados. Já foi, por um tempo, a vantagem incomparável do R
    Para dashboards, prefiro Apache ECharts:
    https://github.com/ecomfe/awesome-echarts

  • Muito legal. Isso é uma reimplementação do ggplot2 em Python? pygg é uma biblioteca leve que converte a gramática do ggplot em Python para código R ggplot2
    A desvantagem é que não é interativa e roda em R; a vantagem é que executa a implementação do ggplot de Hadley em R
    https://github.com/sirrice/pygg

  • Na minha visão, é um pouco decepcionante que tenham basicamente copiado o ggplot. O ggplot não é a resposta final para o design de bibliotecas de visualização
    Por exemplo, no ggplot existe o conceito de scale, que corresponde exatamente a uma função. Isso só acrescenta um excesso conceitual desnecessário à biblioteca. Remover isso seria uma melhoria fácil

    • Quaisquer que sejam as falhas do ggplot, nenhuma outra biblioteca de plotagem, seja matplotlib, base R ou outra, me permitiu criar plots perto da velocidade com que eu digito. No ggplot, consigo fazer isso sem muita ajuda
      No matplotlib, só chego perto depois de usar bastante recentemente e ainda com o GitHub Copilot
    • scale não é exatamente uma função. Para desenhar eixos e legendas, também é necessária uma função inversa. E, na prática, a maior parte da complexidade de uma scale vem dos eixos e das legendas