Matplotlib-Problem savefig schneidet Beschriftungen ab: Der vollständige Guide 2025
Updated on

Wenn du jemals ein Matplotlib-Diagramm hattest, das im Notebook perfekt aussah – aber beim Export mit savefig() abgeschnitten, beschnitten oder mit fehlenden Beschriftungen gespeichert wurde – bist du nicht allein.
Das ist eine der häufigsten Matplotlib-Frustrationen, besonders wenn du Folgendes verwendest:
- Hohe, mit LaTeX gerenderte Beschriftungen
- Mehrzeilige Titel
- Rotierte oder lange Tick-Beschriftungen
- Subplots mit engem Abstand
In diesem aktualisierten Guide lernst du alle zuverlässigen Methoden, um sicherzustellen, dass deine gespeicherten Grafiken immer Beschriftungen, Titel und Annotationen vollständig enthalten – mit modernen Best Practices, auf die du dich verlassen kannst.
🧠 Warum das passiert
Matplotlib vergrößert die Figure-Leinwand nicht automatisch, wenn Beschriftungen über die Achsen hinaus ragen.
Häufige Ursachen sind:
- LaTeX-Ausdrücke, die hohe Symbole erzeugen
- Große
fontsize-Werte - Lange oder rotierte Tick-Beschriftungen
- Dichte Subplot-Gitter
Beispiel:

import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$', fontsize=50)
plt.title('Example with matplotlib 3.4.2\nLabel clipping example')
plt.show()Die y-Achsenbeschriftung ist sichtbar, aber die x-Achsenbeschriftung wird in der gespeicherten Grafik oft abgeschnitten.
✅ 1. Moderne Standardlösung (empfohlen): constrained_layout=True verwenden
Seit Matplotlib 3.6+ (und weiterhin in 3.8+ im Jahr 2025) ist die empfohlene Layout-Methode:
fig, ax = plt.subplots(constrained_layout=True)Beispiel:

fig, ax = plt.subplots(figsize=(7, 5), constrained_layout=True)
ax.set_xlabel("Very long bottom label that usually gets clipped", fontsize=16)
ax.set_ylabel("Tall math label:\n$\\frac{x_a - x_b}{x_c}$")
fig.savefig("figure.png")✔ Vorteile
- Modern und stabil
- Funktioniert besser als
tight_layout() - Funktioniert gut mit Colorbars, Legenden und Subplots
⚠ Nachteile
- Etwas langsamer bei großen Subplot-Grids
Wenn du 2025 neuen Matplotlib-Code schreibst, sollte dies deine Standardwahl sein.
✅ 2. Ränder manuell mit subplots_adjust anpassen
Immer noch eine einfache und wirksame Methode:
plt.subplots_adjust(bottom=0.15)Oder an der Figure:
plt.gcf().subplots_adjust(bottom=0.18)Erhöhe den Randwert, bis Beschriftungen nicht mehr überlappen oder abgeschnitten werden.

✅ 3. tight_layout() verwenden (älter, aber noch nützlich)
tight_layout() passt Abstände automatisch an:
fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(8, 6))
for ax in axes.flatten():
ax.set_xlabel("Example X label")
ax.set_ylabel("Example Y label")
plt.tight_layout()
plt.show()Hinweise
- Gut für einfache Plots
- Kann mit Legenden und Colorbars Probleme haben
constrained_layout=Trueist inzwischen die bevorzugte Lösung
✅ 4. Speichern mit bbox_inches="tight" (sehr guter Schnellfix)
Eine vielgenutzte Lösung gegen Abschneiden:
plt.savefig("myfile.png", bbox_inches="tight")Wann verwenden?
- Schneller Fix, ohne das Layout zu ändern
- Stellt sicher, dass alles, was auf dem Bildschirm sichtbar wäre, auch in der Datei landet

✅ 5. Automatisches Layout mit rcParams aktivieren
Wenn du eine dauerhafte Lösung möchtest, die für alle Plots gilt:

rcParams zur Laufzeit aktualisieren:
from matplotlib import rcParams
rcParams.update({"figure.autolayout": True})ODER matplotlibrc konfigurieren:
figure.autolayout : TrueDas hilft, konsistente Ergebnisse über verschiedene Systeme hinweg zu erzielen.
📌 Übersichtstabelle: Welche Methode sollte ich verwenden?
| Methode | Wann verwenden | Am besten geeignet für |
|---|---|---|
constrained_layout=True | **Standardwahl ** | Modernes Layout, Subplots, Legenden |
bbox_inches='tight' | Schneller Fix beim Speichern | Exporte einzelner Plots |
tight_layout() | Legacy-Code | Einfache Subplot-Grids |
subplots_adjust() | Volle manuelle Kontrolle gewünscht | Feintuning für Publikationsgrafiken |
figure.autolayout=True | Projektweiter Standard | Konsistenz über Systeme hinweg |
💡 Zusätzliche Tipps für perfekte Grafiken
✔ Höhere DPI verwenden, um Probleme mit langen Beschriftungen zu reduzieren
plt.savefig("fig.png", dpi=200, bbox_inches="tight")✔ Extrem große Schriftgrößen vermeiden
Sehr große Fonts erhöhen die Wahrscheinlichkeit, dass etwas abgeschnitten wird.
✔ Für Colorbars: constrained_layout verwenden
Das funktioniert deutlich besser als tight_layout.
📊 Visualisierungen ohne manuelles Layout-Fixing erstellen (PyGWalker)
Wenn du Matplotlib hauptsächlich nutzt, um DataFrames zu visualisieren, musst du Layouts möglicherweise gar nicht mehr manuell anpassen.
Du kannst einfach:
- Deinen DataFrame laden
- Felder per Drag-and-Drop anordnen
- Diagramme sofort generieren
Mit PyGWalker, einem Open-Source-Visualisierungstool:
So verwendest du es:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)Oder probiere es online aus:
| Kaggle | Google Colab | GitHub |
|---|---|---|
![]() | ![]() | ![]() |
❓ Häufig gestellte Fragen
-
Warum werden meine Beschriftungen beim Speichern einer Matplotlib-Grafik abgeschnitten?
Weil Matplotlib die Figure-Leinwand nicht automatisch vergrößert, wenn Beschriftungen außerhalb der Achsen liegen. Das tritt häufig bei LaTeX-Beschriftungen oder rotiertem Text auf. -
Welche Methode behebt das Abschneiden von Beschriftungen im Jahr 2025 am zuverlässigsten?
Verwendeconstrained_layout=Truefür modernen Code oderbbox_inches='tight'als schnellen Fix beim Export. -
Was macht
bbox_inches="tight"?
Es berechnet den Bounding-Box-Ausschnitt beim Speichern neu und stellt sicher, dass alle Textelemente enthalten sind.



