Heim >Backend-Entwicklung >Python-Tutorial >Warum funktioniert Seaborn Displot nicht mit Matplotlib-Subplots?

Warum funktioniert Seaborn Displot nicht mit Matplotlib-Subplots?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 06:33:30989Durchsuche

Why Doesn't Seaborn Displot Work with Matplotlib Subplots?

Fehler: Seaborn Displot zeichnet nicht innerhalb von Unterplots auf

Seaborn Displot generiert bei Verwendung mit Matplotlib nicht wie erwartet nebeneinander liegende Plots. pyplot.subplots. Dieser Fehler tritt auf, weil displot eine Funktion auf Figurenebene ist, der der für Unterplots erforderliche Parameter „ax“ fehlt.

Lösung:

So beheben Sie das Problem und zeigen zwei Plots an In derselben Zeile muss das entsprechende Diagramm auf Achsenebene verwendet werden, das den Parameter „ax“ unterstützt. In diesem Fall ist histplot die bevorzugte Option. Hier ist der korrigierte Code:

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

fig, (ax1, ax2) = plt.subplots(1, 2)

sns.histplot(x=X_train['Age'], hue=y_train, ax=ax1)
sns.histplot(x=X_train['Fare'], hue=y_train, ax=ax2)</code>

Alternative Ansätze:

Wenn Sie displot bevorzugen, können Sie Ihre Daten mit pd.melt und in ein langes Format umstrukturieren Wenden Sie displot auf den transformierten Datenrahmen an.

<code class="python">dfl = X_train.melt(id_vars='passenger', value_vars=['Age', 'Fare'], var_name='category', value_name='value')

sns.displot(data=dfl, x='value', col='category', hue='passenger')</code>

Zusätzliche Überlegungen:

Für Diagramme auf Achsenebene mit mehreren Datenrahmen verwenden Sie pd.concat, um diese zu kombinieren und einen zuzuweisen eindeutige „Quelle“-Spalte, um den Ursprung jedes Datenpunkts zu identifizieren. Diese Spalte kann dann für row=, col= oder hue= verwendet werden.

Das obige ist der detaillierte Inhalt vonWarum funktioniert Seaborn Displot nicht mit Matplotlib-Subplots?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn