- 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
- Lets-Plot é uma biblioteca de plotagem multiplataforma baseada nos princípios da Grammar of Graphics
- Para aprender ggplot2 junto com Grammar of Graphics, a referência indicada é “ggplot2: Elegant Graphics for Data Analysis”, de Hadley Wickham
- Materiais de introdução e exemplos estão disponíveis nos seguintes caminhos
Plataformas compatíveis e principais recursos
-
Python
- É uma biblioteca de visualização em Python oferecida como Grammar of Graphics for Python
- Pode ser usada em notebooks Python
- Também é possível visualizar plots no SciView dos IDEs PyCharm e IntelliJ IDEA
-
Kotlin
- É uma biblioteca de visualização multiplataforma em Kotlin oferecida como Grammar of Graphics for Kotlin
- Tem como alvo casos de uso no ecossistema Kotlin, de notebooks Kotlin a apps Compose-Multiplatform
-
Visualização geoespacial
-
Tooltips e anotações
- É possível customizar conteúdo, formato de valores e aparência de tooltip e annotation nas camadas do plot
1 comentários
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 ggplot2A 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
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 pesquisaSeria ótimo se
ggthemes,scientificplots[1] e outras bibliotecas ggplot pudessem ser portadas ou reimplementadas para lets-plot0: 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?
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
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?
https://vega.github.io/vega/docs/
É 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
Descendo até os exemplos, há plots com muitos pontos: https://wwwtyro.github.io/candygraph/examples/dist/
https://github.com/epezent/implot
Java: https://github.com/SpaiR/imgui-java
Também há em Rust:
https://www.egui.rs/#Demo
Veja a demo Open Plot. Na web, parece que bastaria compilar para WASM. Acho que daria para fazer só os gráficos em WASM e embutir no DOM existente
https://github.com/holoviz/datashader é uma boa opção no ecossistema Python
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 ggplot2A 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
No matplotlib, só chego perto depois de usar bastante recentemente e ainda com o GitHub Copilot