> Modules non standards > Seaborn > Scatterplots et lineplots
Scatterplots et lineplots
replot est la fonction générique qui permet de faire des plots entre 2 variables quantitatives : soit des scatterplots, soit des lineplots :
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')
- kind peut prendre les valeurs 'scatter' (défaut, pour dessiner des points) ou 'line' (pour dessiner une ligne).
- 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)
- scatterplot et lineplot ne permettent pas de dessiner plusieurs graphes par ligne et/ou colonne, contrairement à relplot.
- relplot renvoie un objet seaborn.axisgrid.FacetGrid qu'on peut utiliser pour modifier les graphes :
- 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).
Scatterplot
Scatterplot avec différentes catégories qui permettent de fixer : la couleur (hue), le style de points (style), et la taille (size, si variable numériques) :
- avec tous les paramètres de catégories (la taille est normalisée), et en précisant la plage de variation des tailles :
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.scatterplot(x = 'X', y = 'Y', hue = 'Z', style = 'T', size = 'U', sizes = (30, 200), data = df)
- seaborn.scatterplot(...) est à peu près équivalent à seaborn.relplot(..., kind = 'scatter')
- hue_order = ['b', 'a'] : permet d'indiquer dans quel ordre faire figurer les variables.
- legend = False : n'affiche pas la légende (on peut l'afficher ensuite à la main).
- on peut indiquer une palette sous forme de dictionnaire en indiquant pour chaque catégorie la valeur.
- pour les styles, on peut indiquer quel style utilisé pour chaque niveau :
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']})
seaborn.relplot(x = 'X', y = 'Y', hue = 'Z', style = 'T',
palette = {'a': 'red', 'b': 'blue'}, markers = {'A': '+', 'B': 'x'},
s = 100, data = df)
- relplot renvoie un objet FacetGrid qui permet de l'adapter.
On peut aussi tracer différents graphes en fonction d'une des variables (lattice) :
- on utilise col = 'Z' pour faire une colonne par valeur de la variable Z.
- on peut aussi utiliser row = 'Z' pour faire une ligne par valeur de la variable Z.
- 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
- col_wrap = 2 : va à la ligne après avoir tracé 2 graphes sur la même ligne.
df = pandas.DataFrame({'X': [1, 2, 3, 4, 5], 'Y': [1, 4, 9, 16, 25],
'Z': ['a', 'b', 'a', 'b', 'b']})
seaborn.relplot(x = 'X', y = 'Y', col = 'Z', data = df)
- height = 3 : permet de régler la hauteur (en inches)
- aspect = 1 : la largeur est height * aspect.
Lineplot
Lineplot :
- les points sont reliés par une ligne.
- les valeurs de x sont d'abord triées avant de faire le tracé !
df = pandas.DataFrame({'X': [5, 2, 3, 4, 1], 'Y': [25, 4, 9, 16, 1]})
seaborn.relplot(x = 'X', y = 'Y', kind = 'line', data = df)
- on peut aussi utiliser de manière à peu près équivalente lineplot : seaborn.lineplot(x = 'X', y = 'Y', data = df)
- si on veut éviter de trier les valeurs de x, faire : seaborn.relplot(x = 'X', y = 'Y', sort = False, kind = 'line', data = df)
- si il y a plusieurs valeurs identiques de x à chaque fois, l'intervalle de confiance à 95% va être tracé en utilisant un bootstraping (utiliser ci = None pour éviter cela)
- on peut aussi utiliser la déviation standard au lieu de l'intervalle de confiance avec ci = 'sd'
df = pandas.DataFrame({'X': [1, 1, 2, 2, 3, 3, 4, 4, 5, 5],
'Y': [1, 2, 4, 7, 9, 12, 16, 18, 25, 22]})
seaborn.relplot(x = 'X', y = 'Y', kind = 'line', data = df)
Lineplot avec des barres d'erreur (et éventuellement plusieurs courbes) :
- lineplot avec des barres d'erreur :
df = pandas.DataFrame({'time': [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
'val': [3, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11]})
seaborn.relplot(x = 'time', y = 'val', data = df, kind = 'line', ci = 'sd', err_style = 'bars')
- lineplots multiples avec des barres d'erreur
df = pandas.DataFrame({'time': [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
'categ': ['a', 'b', 'b', 'a', 'a', 'b', 'b', 'a', 'a', 'b', 'b'],
'val': [3, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11]})
seaborn.relplot(x = 'time', y = 'val', data = df, kind = 'line', hue = 'categ', ci = 'sd', err_style = 'bars')
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert