Introduction
Altair est un module Python dedie aux graphiques et dont la syntaxe s’inspire de la Grammaire des Graphiques du package R ggplot2 : on construit un graphique etape par etape par des appels de methodes.
Le package R homonyme s’appuie sur le module Python, en particulier il ne peut etre utilise que si vous avez un executable Python sur votre machine. On passe du code Python au code R en remplacant le “.” par des “$” et les listes Python par des listes ou vecteurs R.
Quelques documents utiles :
- le guide Python https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types
- la documentation R https://vegawidget.github.io/altair/articles/example-gallery-08-interactive-charts.html
- un tutorial sur Colab https://colab.research.google.com/github/altair-viz/altair-tutorial/blob/master/notebooks/06-Selections.ipynb
# modules et donnees Python
import altair as alt
from vega_datasets import data
donnees = data.cars()# packages et donnees R
library("altair")
donnees = py$donneesGraphique simple en Python
chart_simple = alt.Chart(donnees).mark_circle(size = 60).encode(
x = 'Horsepower',
y = 'Miles_per_Gallon',
color = 'Origin')Graphiques interactifs
avec infobulles en R
On ajoute des infobulles et la possibilite de zoomer sur la zone graphique ou la faire glisser a la souris.
alt$Chart(donnees)$mark_circle(size = 60)$encode(
x = 'Horsepower',
y = 'Miles_per_Gallon',
color = 'Origin',
tooltip = c('Name', 'Origin', 'Horsepower', 'Miles_per_Gallon')
)$interactive()avec legende interactive en Python
On ajoute en plus la possibilite de cliquer sur la legende pour filtrer sur un pays.
selection = alt.selection_multi(fields = ['Origin'], bind = 'legend')
chart_legende = alt.Chart(donnees).mark_circle(size = 60).encode(
x = 'Horsepower',
y = 'Miles_per_Gallon',
color = 'Origin',
tooltip = ['Name', 'Origin', 'Horsepower', 'Miles_per_Gallon'],
opacity = alt.condition(selection, alt.value(1), alt.value(0.2))
).interactive(
).add_selection(selection)avec bouton de controle en R
La notation ‘Origin:N’ indique que la variable Origin utilisee pour les couleurs doit etre traitee comme une variable nominale, alors que ‘Origin:O’ la declare comme ordinale et produit des couleurs degradees.
input_dropdown = alt$binding_select(options = list('Europe','Japan','USA'))
selection = alt$selection_single(fields = list('Origin'), bind = input_dropdown, name = "Pays d'")
color = alt$condition(selection,
alt$Color('Origin:N', legend = NULL),
alt$value('lightgray'))
alt$Chart(donnees)$mark_point()$encode(
x = 'Horsepower',
y = 'Miles_per_Gallon',
color = color,
tooltip = 'Name'
)$add_selection(selection)graphiques lies en Python
On selectionne une zone rectangulaire dans le nuage de points et on obtient la repartition des pays dans cette zone. L’operateur “|” place les graphiques cote a cote, le “&” les place l’un au-dessus de l’autre.
interval = alt.selection_interval()
nuage = alt.Chart(donnees).mark_circle(size = 60).encode(
x = 'Horsepower',
y = 'Miles_per_Gallon',
color = alt.condition(interval, 'Origin', alt.value('lightgray')),
).add_selection(interval)
histo = alt.Chart(donnees).mark_bar().encode(
x = 'count()',
y = 'Origin',
color = 'Origin'
).transform_filter(interval)
chart_lies = nuage | histo