3 points par GN⁺ 2023-07-16 | 1 commentaires | Partager sur WhatsApp
  • Lets-Plot est une bibliothèque de tracé multiplateforme qui prend en charge la visualisation de données statistiques en Python et Kotlin, sur la base des principes de la Grammar of Graphics
  • Elle fournit des implémentations distinctes pour Python et Kotlin, afin de s’adapter aux workflows de chaque écosystème, des environnements notebook aux IDE et au développement d’applications
  • En Python, les graphiques peuvent être consultés non seulement dans les notebooks, mais aussi dans PyCharm et dans SciView d’IntelliJ IDEA
  • En Kotlin, elle cible des cas d’usage de visualisation allant des notebooks Kotlin aux applications Compose-Multiplatform
  • Avec le géocodage, le tracé de GeoDataFrame et la personnalisation des infobulles et annotations, elle peut aussi être utilisée pour les données spatiales et la création de graphiques interactifs

Présentation de Lets-Plot

  • Lets-Plot est une bibliothèque de tracé multiplateforme fondée sur les principes de la Grammar of Graphics
  • Pour apprendre ggplot2 et la Grammar of Graphics en parallèle, la ressource recommandée est « ggplot2: Elegant Graphics for Data Analysis » de Hadley Wickham
  • Les ressources de démarrage et les exemples sont disponibles aux emplacements suivants

Plateformes prises en charge et principales fonctionnalités

  • Python

  • Kotlin

  • Visualisation géospatiale

    • Le module Geocoding permet de rechercher des objets spatiaux
    • Si vous disposez déjà d’un GeoDataFrame, vous pouvez directement le tracer
  • Infobulles et annotations

    • Il est possible de personnaliser le contenu, le format des valeurs et l’apparence des tooltip et annotation des couches de graphique

1 commentaires

 
GN⁺ 2023-07-16
Avis sur Hacker News
  • Très sympa. Ça semble s’appuyer sur une grammaire des graphiques de type ggplot2. On peut voir des exemples ici : https://lets-plot.org/pages/charts.html
    Les graphiques de données ont aussi l’air très réussis : https://lets-plot.org/pages/charts.html#discrete-icon-discre...
    Les graphiques de distribution également : https://lets-plot.org/pages/charts.html#visualization-of-dis...
    Je me demande comment ce projet se compare à plotnine, la bibliothèque de tracé de style ggplot2 pour Python

    • Je me demande si ggplot2 est assez généraliste pour produire n’importe quel graphique qu’on souhaite, ou s’il impose fortement son propre style dans la manière ou les types de graphiques qu’on peut créer. Cela dit, le meilleur point de cette bibliothèque est peut-être qu’elle peut aussi être utilisée en Kotlin
  • L’inconvénient des bibliothèques de la famille ggplot dans des langages autres que R, c’est qu’on perd l’énorme quantité d’excellentes bibliothèques d’extension[1] disponibles dans l’original. Personnellement, je fais souvent beaucoup de traitement de données en Python, puis j’exporte vers R, et je fais tous mes graphiques là-bas
    J’ai l’impression que les gens des stats accordent plus d’importance aux graphiques et passent plus de temps à les peaufiner. Et Copilot aide vraiment très bien avec la sémantique et les options de ggplot basées sur R, parce qu’il y a énormément de matière pour l’apprentissage. Je ne sais pas si ce serait aussi vrai pour les subtiles différences des bibliothèques qui en sont des répliques
    [1] https://youtu.be/7UjA_5gNvdw

    • Bonne vidéo. Elle montre bien que R apporte une expressivité supplémentaire pour l’explication et la visualisation. Plutôt que d’apprendre encore un autre wrapper de plotting Python, il vaut peut-être mieux apprendre un peu de R
    • C’est vrai que Copilot aide bien avec la sémantique et les options de ggplot basées sur R, mais je ne pense pas que ce genre de différence constitue un gros obstacle pour les grands modèles de langage. Il suffit d’essayer de convertir un script d’un langage à un autre pour voir à quel point les grands modèles de langage généralisent bien, même si ce n’est pas parfait
      Avec suffisamment de contexte, ils ont probablement de bonnes chances de produire un résultat exploitable
  • Ça ressemble aussi beaucoup à plotnine [0], qui fournit à Python une interface de grammaire des graphiques. J’aime quand même ggplot, donc j’ai hâte d’avoir l’occasion d’utiliser ça pour mes recherches
    Ce serait bien de pouvoir porter ou réimplémenter ggthemes, scientificplots [1] et d’autres bibliothèques ggplot dans lets-plot
    0: https://plotnine.readthedocs.io/en/stable/
    1: https://github.com/garrettj403/SciencePlots

  • Je ne vois pas pourquoi c’est nécessaire. Quelqu’un cherchait-il désespérément encore une autre bibliothèque de plotting ?

    • Le simple fait qu’elle sache produire des graphiques statistiques et ne soit pas basée sur matplotlib en fait déjà un bon point de départ. Plotly est pénible, Altair n’est pas très agréable à utiliser, et bokeh a le même style impératif que matplotlib tout en étant un peu lourd
      Seaborn est bien, mais il faut toujours se battre avec l’abstraction imparfaite qui fuit au-dessus de matplotlib, ce qui rend la composition difficile, et il est aussi compliqué d’obtenir de l’interactivité. Donc oui, moi j’en veux une comme ça. Je veux de bons graphiques interactifs, rapides et donnant une sensation native, et j’ai même essayé d’en créer moi-même. Ggplot permet de se concentrer uniquement sur ce qu’on veut dessiner et de lui passer un dataframe, et ça a l’air d’être aussi le cas ici
    • On dirait que ça a été conçu pour être utilisé dans les nouveaux Kotlin Notebooks de JetBrains
    • Tout le monde en veut. Toutes les alternatives ont de gros défauts, donc avoir plus de concurrence est une bonne chose
  • Existe-t-il des tutoriels ou guides orientés Python pour créer des graphiques avec cette approche grammaire des graphiques ? Ou faut-il lire un livre sur ggplot2 et traduire les exemples R en Python ?

  • Tout est en Kotlin Multiplatform, avec seulement un fin wrapper Python par-dessus. C’est assez surprenant

  • Le plus gros problème des bibliothèques de tracé, c’était qu’elles ne géraient pas correctement des centaines de millions de points de données de façon immédiate. Dans mon précédent projet de data science, j’ai essayé toutes les grandes bibliothèques de plotting, mais aucune ne fonctionnait correctement au-delà de quelques millions de points.
    Je voulais des graphiques qu’on puisse visualiser, agrandir et réduire en temps réel, et c’est devenu la partie difficile du projet. Un seul produit prétendait pouvoir le faire via un GPU dans le cloud, mais il fallait un abonnement payant et envoyer les données dans le cloud. Je ne voulais pas juste une bibliothèque de plus, mais une bibliothèque qui fonctionne vraiment bien et puisse exploiter un GPU local pour le tracé.

  • ggplot2 est excellent pour l’exploration de données. C’était autrefois l’avantage décisif de R.
    Pour les tableaux de bord, je préfère Apache ECharts :
    https://github.com/ecomfe/awesome-echarts

  • Vraiment génial. Est-ce que c’est une réimplémentation de ggplot2 en Python ? pygg est une bibliothèque légère qui convertit la syntaxe ggplot de Python en code R ggplot2.
    Son inconvénient, c’est que ce n’est pas interactif et que ça s’exécute en R ; son avantage, c’est que cela exécute l’implémentation R de ggplot par Hadley.
    https://github.com/sirrice/pygg

  • À mes yeux, c’est un peu décevant qu’ils aient simplement copié ggplot. ggplot n’est pas la réponse ultime à la conception des bibliothèques de visualisation.
    Par exemple, ggplot a une notion de scale qui correspond presque exactement à une fonction. Cela n’ajoute qu’un surplus conceptuel inutile à la bibliothèque. Le supprimer serait une amélioration facile.

    • Quels que soient les défauts de ggplot, ni matplotlib, ni base R, ni aucune autre bibliothèque de tracé ne m’ont permis de produire des graphiques à une vitesse proche de ma vitesse de frappe. Avec ggplot, c’est possible sans grande aide.
      Avec matplotlib, il faut l’avoir beaucoup utilisé récemment et même avoir GitHub Copilot pour s’en approcher.
    • Une scale n’est pas exactement une fonction, parce qu’il faut aussi une fonction inverse pour dessiner les axes et les légendes. Et en pratique, la majeure partie de la complexité des scales vient justement des axes et des légendes.