************ Introduction ************ Python Data Visualisation Overview ================================== R dispose avec `ggplot2 `_ et `shiny `_ d'une bibliothèque graphique et d'un environnement de dashboard de référence. Python hérite d'un historique plus ancien, de domaines d'application plus larges et d'une communauté open source plus importante. Il en résulte un écosystème tentaculaire. .. image:: images/01-python-landscape.png :scale: 50 % :align: center Parmi l'ensemble de ces bibliothèques, les plus récentes utilisent les technologies HTML/CSS/JavaScript. L'intérêt est de produire une visualisation accessible au travers d'un navigateur web et par là même de disposer des fonctionnalités étendues de la bibliothèque `D3JS `_ qui fait référence dans la visualisation de données. Par contre, cette bibliothèque étant très bas niveau, son emploi direct demeure difficile. Des wrappers ont donc été développés, les deux plus performants étant Plotly et Bokeh. Bokeh vs Plotly =============== Pour ce qui concerne `bokeh `_: - le développement est soutenu par `Anaconda `_ - le front end est directement basé sur `D3 `_ - le back end est basé sur le framework `tornado `_ - le langage utilisé est Python mais quelques interactions complexes peuvent nécessiter du JavaScript - l'affichage dans un notebook Jupyter est possible pour les graphiques et les dashboards - l'utilisation de gros dataset peut être lente - le code nécessaire à la visualisation est concis - les dashboards sont construits avec `bokeh server `_ - utilisation native avec `Pandas `_. Pour ce qui concerne `plotly `_: - le développement est soutenu par `la société Plotly `_ - le front end est basé sur la bibliothèque `react `_ développée par Facebook - le back end est basé sur le micro framework `flask `_ - les langages possibles sont Python, R et JavaScript. On peut étendre les possibilités en utilisant React et D3js. - l'affichage dans un notebook Jupyter est possible pour les graphiques - l'utilisation de gros dataset est rapide - le code nécessaire à la visualisation est très concis - les dashboards sont construits avec `dash `_ - utilisation native avec `Pandas `_. Conformément à ce qui précède, le choix de la communauté se porte actuellement sur plotly/dash comme en témoignent les indicateurs `GitHub `_ (il faut sommer les résultats pour l'univers Plotly qui structure sa solution en plusieurs dépôts) : .. image:: images/01-plotly-bokeh-github.png :scale: 75 % :align: center La tendance est confortée par les indicateurs `stackoverflow `_ : .. image:: images/01-plotly-bokeh-stackoverflow.svg :width: 75 % :align: center Références ========== - `Python Data Visualization 2018: Why So Many Libraries? `_ - `Python Data Visualization 2018: Moving Toward Convergence `_ - `How to Build a Reporting Dashboard using Dash and Plotly `_ - `Bokeh vs Dash — Which is the Best Dashboard Framework for Python? `_