Maison  >  Article  >  développement back-end  >  Comment tracer des parcelles Seaborn dans des sous-parcelles Matplotlib définies ?

Comment tracer des parcelles Seaborn dans des sous-parcelles Matplotlib définies ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 18:02:02374parcourir

How to Plot Seaborn Plots Within Defined Matplotlib Subplots?

seaborn ne trace pas dans des sous-parcelles définies

De nombreuses parcelles Seaborn peuvent être tracées dans des sous-parcelles avec la fonction matplotlib.pyplot.subplots, de la même manière que les tracés matplotlib classiques peut être tracé. Cependant, certaines fonctions ont certaines limitations, comme l'absence de paramètre ax

La dépréciation de seaborn.distplot

Avant la version 0.11, la fonction seaborn.distplot était utilisée pour tracer de nombreux types différents de distributions. Cette fonction est obsolète avec Seaborn 0.11

seaborn.distplot() has been DEPRECATED in seaborn 0.11 and is replaced with the following:

displot(), a figure-level function with a similar flexibility over the kind of plot to draw. This is a FacetGrid, and does not have the ax parameter, so it will not work with matplotlib.pyplot.subplots.

histplot(), an axes-level function for plotting histograms, including with kernel density smoothing. This does have the ax parameter, so it will work with matplotlib.pyplot.subplots.

Trouver la fonction correcte

Pour toute fonction Seaborn qui n'a pas de paramètre d'axe, il existe une fonction correspondante au niveau des axes qui peut être utilisée à la place. . Pour trouver la fonction correcte, vous pouvez vous référer à la documentation Seaborn pour le tracé au niveau de la figure pour trouver la fonction de tracé au niveau des axes appropriée.

Voici une liste de tracés au niveau de la figure qui n'ont pas de hache. paramètre :

  • relplot
  • displot
  • catplot

Tracer différentes parcelles sur la même ligne

Dans ce Dans ce cas, le but est de tracer deux histogrammes différents sur la même ligne. Puisque displot est une fonction au niveau de la figure et n'a pas de paramètre ax, elle ne peut pas être utilisée avec matplotlib.pyplot.subplots. Dans ce cas, la fonction correcte à utiliser serait histplot, qui est une fonction au niveau des axes qui a un paramètre axe.

Voici un exemple utilisant histplot pour tracer deux histogrammes différents sur la même ligne :

<code class="python">import seaborn as sns
import matplotlib.pyplot as plt

# load data
penguins = sns.load_dataset("penguins", cache=False)

# select the columns to be plotted
cols = ['bill_length_mm', 'bill_depth_mm']

# create the figure and axes
fig, axes = plt.subplots(1, 2)
axes = axes.ravel()  # flattening the array makes indexing easier

for col, ax in zip(cols, axes):
    sns.histplot(data=penguins[col], kde=True, stat='density', ax=ax)

fig.tight_layout()
plt.show()</code>

Cela produira une figure avec deux histogrammes tracés sur la même ligne.

Tracer différents tracés à partir de plusieurs DataFrames

Si vous avez plusieurs dataframes, vous pouvez les combiner en utilisant pandas pd.concat, puis utilisez la méthode assign pour créer une colonne d'identification « source », qui peut être utilisée pour spécifier row= ou col=, ou comme paramètre de teinte

<code class="python"># list of dataframe
lod = [df1, df2, df3]

# create one dataframe with a new 'source' column to use for row, col, or hue
df = pd.concat((d.assign(source=f'df{i}') for i, d in enumerate(lod, 1)), ignore_index=True)</code>

Vous pouvez ensuite utilisez ce cadre de données combiné pour tracer une variété de tracés différents à l'aide de seaborn.

Pour plus d'informations, consultez les ressources suivantes :

  • [Documentation Seaborn](https://seaborn.pydata .org/)
  • [Traçage de sous-parcelles avec Matplotlib](https://matplotlib.org/stable/tutorials/intermediate/subplots.html)
  • [Intégration Seaborn et Pandas](https : //seaborn.pydata.org/tutorial/using_pandas.html)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn