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 :

# modules et donnees Python
import altair as alt
from vega_datasets import data
donnees = data.cars()
# packages et donnees R
library("altair")
donnees = py$donnees

Graphique 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

retour au debut du document