> Modules non standards > Seaborn > Scatterplots et lineplots
Scatterplots et lineplots
On part par exemple d'un dataframe comme :
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]})
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)
- pour hue, si la valeur est numérique, utilise une échelle de couleurs, sinon utilise des couleurs discrètes.
- s = 10 (et non size = 10) si on veut simplement ajuster la taille de tous les points (size est quand on veut faire varier la taille du point en fonction d'une variable).
- hue_order = ['b', 'a'] : permet d'indiquer dans quel ordre faire figurer les variables.
- hue_norm = (2, 20) : la plage dans laquelle on fait varier les couleurs quand la hue est quantitative.
- palette = {'a': 'red', 'b': 'green'} : les couleurs à utiliser si hue a des valeurs discrètes.
- palette = 'RdBu' : la palette de si hue a des valeurs continues.
- legend = False : n'affiche pas la légende (on peut l'afficher ensuite à la main).
- ax = myAxes : pour indiquer l'axe prédéfini sur lequel tracer le graphe.
- 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.scatterplot(x = 'X', y = 'Y', hue = 'Z', style = 'T',
palette = {'a': 'red', 'b': 'blue'}, markers = {'A': '+', 'B': 'x'},
s = 100, data = df)
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.lineplot(x = 'X', y = 'Y', data = df)
- si il y a plusieurs valeurs identiques de x à chaque fois,la moyenne est calculée et l'intervalle de confiance à 95% va être tracé en utilisant un bootstraping (utiliser ci = None pour éviter cela)
- estimator = numpy.median : utilise la valeur médiane plutôt que la moyenne.
df = pandas.DataFrame({'X': [5, 2, 3, 4, 1, 5, 2, 3, 4, 1],
'Y': [25, 4, 9, 16, 1, 10, 4, 6, 8, 2],
'Z': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b']})
seaborn.lineplot(x = 'X', y = 'Y', data = df)
- on peut aussi utiliser la déviation standard au lieu de l'intervalle de confiance avec errorbar = '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, 20]})
seaborn.lineplot(x = 'X', y = 'Y', marker = 'o', errorbar = 'sd', err_style = 'bars', data = df,
markersize = 20, markerfacecolor = 'red')
lineplot peut tracer plusieurs courbes, éventuellement avec des barres d'erreur si valeurs redondantes pour la même valeur de x :
- lineplots multiples avec des barres d'erreur :
df = pandas.DataFrame({'X': [5, 2, 3, 4, 1, 5, 2, 3, 4, 4, 1, 1],
'Y': [25, 4, 9, 16, 1, 10, 4, 6, 8, 12, 2, 10],
'Z': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b']})
seaborn.lineplot(x = 'X', y = 'Y', hue = 'Z', marker = 'o', markersize = 10, errorbar = 'sd',
err_style = 'bars', err_kws = {'capsize': 5, 'capthick': 2, 'elinewidth': 0.5}, data = df)
- markersize (ou ms) est la taille des marqueurs.
- capsize est la largeur des traits horizontaux des barres d'erreur (défaut = pas de trait horizontal).
- capthick est l'épaisseur des traits horizontaux.
- elinewidth est l'épaisseur des traits verticaux.
On peut tracer différentes courbes :
df = pandas.DataFrame({'X': [5, 2, 3, 4, 1, 5, 2, 3, 4, 4, 1, 1],
'Y': [25, 4, 9, 16, 1, 10, 4, 6, 8, 12, 2, 10],
'Z': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b']})
- de couleurs différentes avec hue = 'Z' : seaborn.lineplot(x = 'X', y = 'Y', hue = 'Z', data = df, palette = {'a': 'red', 'b': 'blue'}, hue_order = ['b', 'a'])
- de styles différents avec style = 'Z' : seaborn.lineplot(x = 'X', y = 'Y', style = 'Z', data = df, markers = {'a': 'o', 'b': 'D'}, dashes = {'a': (3, 0), 'b': (2, 2)}, style_order = ['b', 'a'])
- les valeurs de dashes sont des paires : (longueur du trait, longueur de l'espace entre les traits).
- les seuls markers autorisés sont : 'o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P', 'X'
- si on a 2 variables dont les valeurs déterminent chaque courbe, on peut même combiner hue et style !
Pour tracer à la fois les points et les lignes :
myPalette = {'a': 'green', 'b': 'blue'}
df = pandas.DataFrame({'A': [1, 2, 3, 3, 4, 4, 4, 5, 5, 5],
'B': [6, 3, 7, 6, 8, 9, 5, 10, 7, 8],
'C': ['a', 'b', 'a', 'b', 'a', 'a', 'b', 'a', 'b', 'b']})
seaborn.scatterplot(x = 'A', y = 'B', hue = 'C', data = df, s = 40,
hue_order = ['b', 'a'], palette = myPalette)
seaborn.lineplot(x = 'A', y = 'B', hue = 'C', data = df, ci = None, legend = False)
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert