Mis a jour le 2025-04-14, 12:10

relplot

relplot est la fonction générique qui permet de faire des plots entre 2 variables quantitatives : soit des scatterplots, soit des lineplots :
  • kind indique le type de graphe :
    • kind = 'scatter' pour un scatterplot (le défaut)
    • kind = 'line' pour un lineplot
  • df = pandas.DataFrame({'X': [1, 2, 3, 4, 5], 'Y': [1, 4, 9, 16, 25],
                           'Z': ['a', 'b', 'a', 'b', 'b'],
                           'T': ['A', 'A', 'A', 'B', 'B'], 'U': [20, 10, 10, 2, 10]})
    
    seaborn.relplot(x = 'X', y = 'Y', data = df, kind = 'scatter')
        
  • on peut dessiner plusieurs graphes en ligne ou en colonne en fonction des valeurs d'une ou 2 variables : seaborn.relplot(x = 'X', y = 'Y', data = df, kind = 'scatter', col = 'Z', row = 'T')
  • on peut dessiner en colonnes, et retourner à la ligne après un certain nombre de graphes : seaborn.relplot(x = 'X', y = 'Y', col = 'U', col_wrap = 2, data = df)
  • relplot renvoie un objet seaborn.axisgrid.FacetGrid qu'on peut utiliser pour modifier les graphes, par exemple (voir aussi FacetGrid) :
    • fg = seaborn.relplot(...)
    • fg.set_xlabels('my x label') : met un label sur l'axe des x.
    • fg.set_titles(col_template = 'pour valeur de {col_var} = {col_name}') : si on a utilisé col, permet d'indiquer quoi mettre dans le titre en fonction du nom de la variable (col_var) et de ses valeurs (col_name).
    • fg.set_titles(template = '{col_name}', size = 20) : pour changer la taille des titres de chaque plot.
df = pandas.DataFrame({'X': [1, 2, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], 'Y': [1, 4, 9, 16, 25, 1, 0, 2, 4, 3, 1, 4, 5, 5, 6], 'Z': ['a', 'a', 'a', 'a', 'a', 'b','b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b']}) seaborn.relplot(x = 'X', y = 'Y', col = 'Z', data = df, kind = 'line', marker = 'o', col_order = ['b', 'a'])
Paramètres :
  • seaborn.relplot(x = 'X', y = 'Y', col = 'Z', col_order = ['b', 'a'], data = df) : impose un certain ordre pour les graphes en fonction des valeurs de Z.
  • pareil avec row_order
  • hue = 'Z' : dessine sur le même graphe en distinguant les séries. Peut être aussi une valeur numérique (a du sens pour kind = 'scatter')
  • hue_order = ['b', 'a'] : impose l'ordre.
  • hue_norm = (0, 100) : pour les hue numériques, impose un range pour le minimum et le maximum de la palette.
  • palette = 'RdBu' : indique la palette à utiliser pour les hue numériques.
  • size = 'T' : utilise la variable T pour fixer la taille des markers (quand kind = 'scatter'). On a aussi size_order et size_norm
  • style = 'Z' : groupe par série.
  • markers = ['o', 'D'] ou markers = {'a': 'o', 'b': 'D'} : indique les marqueurs pour chaque série correspondant à style (pour kind = 'scatter').
  • dashes = {'a': (3, 0), 'b': (2, 2)} : valable pour style et kind = 'line', indique pour chaque série le type de trait par un couple : taille du segment, taille du gap.
  • height = 4 : la hauteur d'un graphe.
  • aspect = 2 : ratio largeur / hauteur (défaut est 1)
  • facet_kws = {'sharey': False, 'xlim': [0, 6]} : des paramètres de FacetGrid.
  • ci = 'sd' : utilise la dévation standard.
  • err_style = 'bars' : affiche des barres d'erreur plutôt qu'un intervalle de confiance (le défaut est 'band'.
  • legend = False : supprime la légende
Avec style : df = pandas.DataFrame({'X': [1, 2, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], 'Y': [1, 4, 9, 16, 25, 1, 0, 2, 4, 3, 1, 4, 5, 5, 6], 'Z': ['a', 'a', 'a', 'a', 'a', 'b','b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b']}) seaborn.relplot(x = 'X', y = 'Y', style = 'Z', data = df, kind = 'line', markers = {'a': 'D', 'b': 'o'}, dashes = {'a': (3, 0), 'b': (2, 2)}, errorbar = 'sd', err_style = 'bars')
Avec hue : df = pandas.DataFrame({'X': [1, 2, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], 'Y': [1, 4, 9, 16, 25, 1, 0, 2, 4, 3, 1, 4, 5, 5, 6], 'Z': ['a', 'a', 'a', 'a', 'a', 'b','b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b']}) seaborn.relplot(x = 'X', y = 'Y', hue = 'Z', data = df, kind = 'line', marker = 'D', markersize = 10, palette = {'a': 'red', 'b': 'blue'}, errorbar = 'sd', err_style = 'bars')
Avec plusieurs graphes : df = pandas.DataFrame({'X': [1, 2, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], 'Y': [1, 4, 9, 16, 25, 1, 0, 2, 4, 3, 1, 4, 5, 5, 6], 'Z': ['a', 'a', 'a', 'a', 'a', 'b','b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b']}) seaborn.relplot(x = 'X', y = 'Y', col = 'Z', data = df, kind = 'line', marker = 'D', markersize = 10, errorbar = 'sd', err_style = 'bars', height = 3, aspect = 2, facet_kws = {'sharey': False, 'xlim': [0, 6]})

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert