Direkt zum Inhalt
HeimAnleitungenPython

Python Seaborn Line Plot Tutorial: Datenvisualisierungen erstellen

Entdecke, wie du mit Seaborn, einer beliebten Python-Datenvisualisierungsbibliothek, Liniendiagramme in Python erstellen und anpassen kannst.
Aktualisierte 11. Sept. 2024  · 12 Min. lesen

Ein Liniendiagramm ist eine relationale Datendarstellung, die zeigt, wie sich eine kontinuierliche Variable verändert, wenn eine andere sich verändert. Sie ist eine der gebräuchlichsten Grafiken, die in den Bereichen Finanzen, Vertrieb, Marketing, Gesundheitswesen, Naturwissenschaften und mehr verwendet wird.

In diesem Tutorial zeigen wir dir, wie du mit Seaborn, einer beliebten Python-Bibliothek zur Datenvisualisierung, Liniendiagramme in Python erstellst und anpasst.

Einführung in den Datensatz

Um etwas zum Üben zu haben, laden wir zunächst den Kaggle-Datensatz " Tägliche Wechselkurse pro Euro 1999-2023" herunter. Dann importieren wir alle notwendigen Pakete und lesen den Datenrahmen ein und bereinigen ihn. Ohne auf die Details des Reinigungsprozesses einzugehen, zeigt der folgende Code, welche Schritte auszuführen sind:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('euro-daily-hist_1999_2022.csv')
df = df.iloc[:, [0, 1, 4, -2]]
df.columns = ['Date', 'Australian dollar', 'Canadian dollar', 'US dollar']
df = pd.melt(df, id_vars='Date', value_vars=['Australian dollar', 'Canadian dollar', 'US dollar'], value_name='Euro rate', var_name='Currency')
df['Date'] = pd.to_datetime(df['Date'])
df = df[df['Date']>='2022-12-01'].reset_index(drop=True)
df['Euro rate'] = pd.to_numeric(df['Euro rate'])
print(f'Currencies: {df.Currency.unique()}\n')
print(df.head())
print(f'\n{df.Date.dt.date.min()}/{ df.Date.dt.date.max()}')

Ausgabe:

Currencies: ['Australian dollar' 'Canadian dollar' 'US dollar']

        Date           Currency  Euro rate
0 2023-01-27  Australian dollar     1.5289
1 2023-01-26  Australian dollar     1.5308
2 2023-01-25  Australian dollar     1.5360
3 2023-01-24  Australian dollar     1.5470
4 2023-01-23  Australian dollar     1.5529

2022-12-01/2023-01-27

Der resultierende Datenrahmen enthält tägliche (Werktage) Euro-Kurse für australische, kanadische und US-Dollars für den Zeitraum vom 01.12.2022 bis einschließlich 27.01.2023.

Jetzt können wir uns an die Erstellung und Anpassung von Python-Linienplots wagen.

Grundlagen des Seaborn Line Plots

Um ein Liniendiagramm in Seaborn zu erstellen, können wir eine der beiden Funktionen verwenden: lineplot() oder relplot(). Insgesamt haben sie viele gemeinsame Funktionen und identische Parameternamen. Der Hauptunterschied besteht darin, dass wir mit relplot() Linienplots mit mehreren Linien auf verschiedenen Facetten erstellen können. Stattdessen ermöglicht lineplot() die Arbeit mit Konfidenzintervallen und die Aggregation von Daten.

In diesem Lehrgang werden wir hauptsächlich die Funktion lineplot() verwenden.

Im Kurs Einführung in die Datenvisualisierung mit Seaborn lernst und übst du die wichtigsten Funktionen und Methoden der Seaborn-Bibliothek. Du kannst dir auch unser Seaborn-Tutorial für Anfänger ansehen, um dich mit der beliebten Python-Bibliothek vertraut zu machen. 

Erstellen eines einzelnen Meeresspiegels

Wir können ein Liniendiagramm erstellen, das die Beziehungen zwischen zwei kontinuierlichen Variablen wie folgt darstellt:

usd = df[df['Currency']=='US dollar'].reset_index(drop=True)
sns.lineplot(x='Date', y='Euro rate', data=usd)

Ausgabe:

Seaborn Single-Line Plot mit Lineplot

Die obige Grafik zeigt die Dynamik des EUR-USD-Kurses. Wir haben die Variablen definiert, die auf der x- und y-Achse dargestellt werden sollen (die x- und y-Parameter ), und den Datenrahmen (Daten), aus dem wir diese Variablen nehmen.

Zum Vergleich: Um denselben Plot mit relplot() zu erstellen, würden wir Folgendes schreiben:

sns.relplot(x='Date', y='Euro rate', data=usd, kind='line')

Ausgabe:

Seaborn Single-Line Plot mit Relplot

In diesem Fall haben wir ein weiteres Argument für die Funktion relplot() angegeben: kind='line'. Diese Funktion erstellt standardmäßig ein Streudiagramm.

Anpassen eines einzelnen Meeresspiegels

Wir können die obige Tabelle auf viele Arten anpassen, um sie lesbarer und informativer zu machen. Wir können zum Beispiel die Größe der Zahlen anpassen, Titel und Achsenbeschriftungen hinzufügen, die Schriftgröße anpassen, die Linie anpassen, Markierungen hinzufügen und anpassen usw. Sehen wir uns an, wie wir diese Verbesserungen in Seaborn umsetzen können.

Anpassen der Figurengröße

Da Seaborn auf matplotlib aufbaut, können wir matplotlib.pyplot verwenden, um die Größe der Figuren anzupassen:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd)

Ausgabe:

Seaborn Single-Line Plot - angepasste Größe der Abbildung mit relplot

Stattdessen können wir mit relplot() die Parameter height und aspect (das Verhältnis von Breite zu Höhe) für denselben Zweck verwenden:

sns.relplot(x='Date', y='Euro rate', data=usd, kind='line', height=6, aspect=4)

Ausgabe:

Seaborn plot.png

Hinzufügen eines Titels und von Achsenbeschriftungen

Um einen Diagrammtitel und Achsenbeschriftungen hinzuzufügen, können wir die Funktion set() für das seaborn line plot-Objekt verwenden und die Argumente title, xlabel und ylabel übergeben:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')

Ausgabe:

Seaborn Single-Line Plot - Titel und Achsenbeschriftung hinzugefügt

Einstellen der Schriftgröße

Eine bequeme Möglichkeit, die Schriftgröße anzupassen, ist, die Funktion set_theme() zu verwenden und mit verschiedenen Werten des Parameters font_scale zu experimentieren:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn Single-Line Plot - angepasste Schriftgröße

Beachte, dass wir auch style='white' hinzugefügt haben, um zu vermeiden, dass der ursprüngliche Stil überschrieben wird.

Ändern der Linienfarbe, des Stils und der Größe

Um die Diagrammlinie anzupassen, können wir einige optionale Parameter wie bei matplotlib.pyplot.plot angeben, z. B. Farbe, Linienstil oder Linienstärke:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, linestyle='dotted', color='magenta', linewidth=5).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn Single-Line Plot - angepasste Linie

Hinzufügen von Markern und Anpassen ihrer Farbe, ihres Stils und ihrer Größe

Es ist möglich, Markierungen auf der Linie hinzuzufügen und ihr Aussehen anzupassen. In diesem Fall können wir auch einige Parameter aus der Matplotlib verwenden, wie z.B. marker, markerfacecolor oder markersize:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, marker='*', markerfacecolor='limegreen', markersize=20).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn Single-Line Plot - Markierungen hinzugefügt und angepasst

Die Dokumentation liefert uns die ultimative Liste der Parameter, die wir für die Verbesserung der Ästhetik einer Meeresspiegeldarstellung verwenden können. Insbesondere können wir alle möglichen Markierungen sehen , die zur Auswahl stehen.

In unserem Seaborn-Spickzettel findest du weitere Möglichkeiten, wie du ein Liniendiagramm in Seaborn anpassen kannst.

Seaborn Line Plots mit mehreren Lines

Oft müssen wir untersuchen, wie sich mehrere kontinuierliche Variablen in Abhängigkeit von einer anderen kontinuierlichen Variable verändern. Zu diesem Zweck können wir ein Seaborn Line Plot mit mehreren Linien erstellen. Die Funktionen lineplot() und relplot() sind auch in solchen Fällen anwendbar.

Erstellen eines Meeresspiegels mit mehreren Linien

Technisch gesehen ist es möglich, ein Liniendiagramm mit mehreren Linien zu erstellen, indem du für jede abhängige Variable, d.h. für jede Linie, ein eigenes Achsenobjekt erstellst:

aud = df[df['Currency']=='Australian dollar'].reset_index(drop=True)
cad = df[df['Currency']=='Canadian dollar'].reset_index(drop=True)

sns.lineplot(x='Date', y='Euro rate', data=usd)
sns.lineplot(x='Date', y='Euro rate', data=aud)
sns.lineplot(x='Date', y='Euro rate', data=cad)

Ausgabe:

Seaborn-Mehrlinienplot - separate Achsenobjekte für abhängige Variablen

Oben haben wir zwei weitere Teilmengen aus unserem ursprünglichen Datenrahmen df extrahiert - für den australischen und den kanadischen Dollar - und jeden Eurokurs gegen die Zeit aufgetragen. Es gibt jedoch effizientere Lösungen: die Verwendung der Parameter Farbton, Stil oder Größe, die sowohl in lineplot() als auch in relplot() verfügbar sind.

Verwendung des Parameters Farbton

Dieser Parameter funktioniert folgendermaßen: Wir weisen ihm den Namen einer Dataframe-Spalte zu, die kategoriale Werte enthält, und dann erzeugt seaborn ein Liniendiagramm für jede Kategorie und gibt jeder Linie eine andere Farbe:

sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency')

Ausgabe:

Seaborn-Mehrlinienplot mit Farbton

Mit nur einer Zeile einfachen Codes haben wir ein Meerhorn-Liniendiagramm für drei Kategorien erstellt. Beachte, dass wir den ursprünglichen Datenrahmen df anstelle seiner Untergruppen für verschiedene Währungen übergeben haben.

Verwendung des Stilparameters

Der Parameter style funktioniert genauso wie hue, nur dass er zwischen den Kategorien durch unterschiedliche Linienstile (durchgezogen, gestrichelt, gepunktet usw.) unterscheidet, ohne die Farbe zu beeinflussen:

sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency')

Ausgabe:

Seaborn Mehrlinienplot mit Stil

Verwendung des Größenparameters

Genau wie bei Farbton und Stil wird auch beim Parameter Größe für jede Kategorie eine eigene Zeile erstellt. Sie hat keinen Einfluss auf die Farbe und den Stil der Linien, macht aber jede von ihnen unterschiedlich breit:

sns.lineplot(x='Date', y='Euro rate', data=df, size='Currency')

Ausgabe:

Seaborn-Mehrlinienplot mit Größe

Anpassen eines Meeresspiegels mit mehreren Linien

Lass uns nun mit der Ästhetik unseres Diagramms experimentieren. Einige Techniken sind identisch mit denen, die wir bei einem einzelnen Seaborn-Linienplot angewendet haben. Die anderen sind nur für Linienplots mit mehreren Linien spezifisch.

Allgemeine Anpassungen

Wir können die Größe der Abbildung anpassen, einen Titel und Achsenbeschriftungen hinzufügen und die Schriftgröße des obigen Diagramms auf dieselbe Weise ändern, wie wir es bei einem einzelnen Liniendiagramm getan haben:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot - allgemeine Anpassungen

Ändern von Farbe, Stil und Größe der einzelnen Zeilen

Vorhin haben wir gesehen, dass seaborn bei Verwendung der Parameter Farbton, Stil oder Größe einen Standardsatz von Farben, Stilen und Größen für ein Liniendiagramm mit mehreren Linien bereitstellt. Bei Bedarf können wir diese Standardeinstellungen überschreiben und Farben, Stile und Größen selbst auswählen.

Wenn wir den Parameter hue verwenden, können wir das Argument palette auch als Liste oder Tupel von matplotlib-Farbnamen übergeben:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen']).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot unter Verwendung von Farbtönen und Bereitstellung einer benutzerdefinierten Palette

Es ist auch möglich, eine bestehende Matplotlib-Palette direkt anzuwenden:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette='spring').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot unter Verwendung von Farbtönen und Bereitstellung einer Standardpalette

Gleichzeitig können wir bei der Verwendung von hue auch den Linienstil und die Breite aller Linien mit den Argumenten linestyle und linewidth anpassen:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen'], linestyle='dashed', linewidth=5).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Hue - Linienstil, Farbe und Breite angepasst

Stattdessen können wir, wenn wir mit dem style-Parameter ein Liniendiagramm mit mehreren Linien erstellen, eine Liste (oder ein Tupel) von Listen (oder Tupeln) einem Parameter namens dashes zuweisen:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Stil und benutzerdefinierten Mustern

In der obigen Liste der Listen, die den Strichen zugeordnet sind, steht der erste Punkt jeder Unterliste für die Länge eines Segments der entsprechenden Linie, während der zweite Punkt die Länge einer Lücke angibt.

Hinweis: Um eine durchgezogene Linie darzustellen, müssen wir die Länge einer Lücke auf Null setzen, z. B.: [1, 0].

Um die Farbe und die Breite aller Linien dieses Diagramms anzupassen, gibst du die Argumente color und linewidth an, genau wie bei der Anpassung eines einzelnen Meeresspiegels:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]], color='darkviolet', linewidth=4).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Stil - angepasster Linienstil, Farbe und Breite

Wenn wir schließlich den Parameter size verwenden, um ein Seaborn Multiple Line Plot zu erstellen, können wir die Breite jeder Linie über den Parameter sizes regulieren. Sie nimmt eine Liste (oder ein Tupel) von ganzen Zahlen auf:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, size='Currency', sizes=[2, 10, 5]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot unter Verwendung der Größe und Bereitstellung benutzerdefinierter Linienbreiten

Um die Farbe und den Stil aller Linien dieses Plots anzupassen, müssen wir die Argumente linestyle und color angeben:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, size='Currency', sizes=[2, 10, 5], linestyle='dotted', color='teal').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Größe - angepasster Linienstil, Farbe und Breite

Hinzufügen von Markern und Anpassen ihrer Farbe, ihres Stils und ihrer Größe

Wir möchten vielleicht Markierungen auf unserem Seaborn Multiple Line Plot hinzufügen.

Um Markierungen mit derselben Farbe, demselben Stil und derselben Größe auf allen Linien hinzuzufügen, müssen wir die Parameter von matplotlib verwenden, wie z. B. marker, markerfacecolor, markerize usw., genau wie bei einem einzelnen Liniendiagramm:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', marker='o', markerfacecolor='orangered', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Markern derselben Farbe, desselben Stils und derselben Größe

Anders sieht es jedoch aus, wenn wir für jede Zeile unterschiedliche Markierungen haben wollen. In diesem Fall müssen wir den Marker-Parameter verwenden, der jedoch laut den seaborn-Funktionen nur funktioniert, wenn der Style-Parameter angegeben ist:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', markers=['o', 'X', '*'], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit Markern verschiedener Stile

Im obigen Diagramm können wir alle Linien einfarbig machen, indem wir das Argument Striche angeben und das Stilmuster [1, 0] für jede Linie festlegen:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', markers=['o', 'X', '*'], dashes=[[1, 0], [1, 0], [1, 0]], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Ausgabe:

Seaborn-Mehrlinienplot mit durchgezogenen Linien und Markern verschiedener Stile

Fazit

In diesem Tutorial haben wir eine Reihe von Möglichkeiten kennengelernt, wie du ein Seaborn-Liniendiagramm mit einer oder mehreren Linien erstellen und anpassen kannst.

Mit Seaborn können wir noch viel mehr tun, um einen Linienplot weiter anzupassen. Wir können zum Beispiel:

  • Zeilen nach mehr als einer kategorialen Variable gruppieren
  • Anpassen der Legende
  • Erstellen von Liniendiagrammen mit mehreren Linien auf verschiedenen Facetten
  • Anzeigen und Anpassen des Konfidenzintervalls
  • Anpassen der Zeitachsen-Ticks und ihrer Beschriftungen für ein Zeitreihen-Liniendiagramm

Wenn du tiefer in die Möglichkeiten von Seaborn einsteigen möchtest, solltest du unseren Kurs Intermediate Data Visualization with Seaborn besuchen.

FAQs zum Seaborn Line Plot

Was ist eine Linienhandlung in Seaborn?

Ein Liniendiagramm ist eine Art von Diagramm in Seaborn, das die Beziehung zwischen zwei Variablen darstellt, indem es die Datenpunkte mit einer geraden Linie verbindet.

Welche Art von Daten eignet sich am besten für ein Liniendiagramm in Seaborn?

Liniendiagramme eignen sich am besten für Daten, bei denen es eine klare Beziehung zwischen zwei Variablen gibt und die Variablen kontinuierlich oder ordinal sind.

Kann ich in Seaborn mehrere Linien auf demselben Grundstück zeichnen?

Ja, du kannst in Seaborn mehrere Linien in einem Diagramm darstellen, indem du mit dem Parameter hue eine kategoriale Variable angibst, nach der die Daten gruppiert werden sollen.

Was ist der Unterschied zwischen einem Liniendiagramm und einem Streudiagramm in Seaborn?

Ein Liniendiagramm in Seaborn zeigt die Beziehung zwischen zwei Variablen mit einer geraden Linie, während ein Streudiagramm die Beziehung mit einzelnen Datenpunkten darstellt.

Kann ich eine Regressionslinie zu meinem Liniendiagramm in Seaborn hinzufügen?

Ja, du kannst eine Regressionslinie zu deinem Liniendiagramm in Seaborn hinzufügen, indem du die Funktion regplot() verwendest, die ein lineares Regressionsmodell zwischen zwei Variablen anpasst und aufzeichnet.

Wie speichere ich meinen Seaborn-Linienplot in einer Datei?

Du kannst deine Seaborn-Liniendarstellung in einer Datei speichern, indem du die Funktion savefig() aus der Bibliothek matplotlib verwendest, die die aktuelle Abbildung in einem bestimmten Dateipfad und -format speichert.

Themen