Python >> Tutoriel Python >  >> Python Tag >> Seaborn

Comment créer un tracé multiligne à l'aide de seaborn ?

Seaborn privilégie le "format long" en entrée. L'ingrédient clé pour convertir votre DataFrame de son "format large" (une colonne par type de mesure) en format long (une colonne pour toutes les valeurs de mesure, une colonne pour indiquer le type) est pandas.melt. Étant donné un data_preproc structuré comme le vôtre, rempli de valeurs aléatoires :

num_rows = 20
years = list(range(1990, 1990 + num_rows))
data_preproc = pd.DataFrame({
    'Year': years, 
    'A': np.random.randn(num_rows).cumsum(),
    'B': np.random.randn(num_rows).cumsum(),
    'C': np.random.randn(num_rows).cumsum(),
    'D': np.random.randn(num_rows).cumsum()})

Un seul tracé de quatre lignes, une par type de mesure, est obtenu avec

sns.lineplot(x='Year', y='value', hue='variable', 
             data=pd.melt(data_preproc, ['Year']))

(Notez que 'value' et 'variable' sont les noms de colonne par défaut renvoyés par melt , et peut être adapté à votre goût.)


Voir la documentation :

sns.lineplot(x="Year", y="signal", hue="label", data=data_preproc)

Vous devez probablement réorganiser votre dataframe de manière appropriée afin qu'il y ait une colonne pour le x données, une pour le y données, et un qui contient l'étiquette du point de données.

Vous pouvez également simplement utiliser matplotlib.pyplot . Si vous importez seaborn , une grande partie de la conception améliorée est également utilisée pour les tracés matplotlib "normaux". Seaborn est vraiment "juste" une collection de méthodes qui fournissent facilement des données et tracent des paramètres à matplotlib.


Ceci :

sns.lineplot(data=data_preproc)

fera ce que vous voulez.