Hinweis
Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen.
Kurve mit Fehlerband#
Dieses Beispiel veranschaulicht, wie man ein Fehlerband um eine parametrisierte Kurve zeichnet.
Eine parametrisierte Kurve x(t), y(t) kann direkt mit plot gezeichnet werden.

Ein Fehlerband kann verwendet werden, um die Unsicherheit der Kurve anzuzeigen. In diesem Beispiel gehen wir davon aus, dass der Fehler als Skalar err angegeben werden kann, der die Unsicherheit senkrecht zur Kurve an jedem Punkt beschreibt.
Wir visualisieren diesen Fehler als farbiges Band um den Pfad mit einem PathPatch. Der Patch wird aus zwei Pfadsegmenten (xp, yp) und (xn, yn) erstellt, die um +/- err senkrecht zur Kurve (x, y) verschoben sind.
Hinweis: Diese Methode zur Verwendung eines PathPatch eignet sich für beliebige Kurven in 2D. Wenn Sie nur ein Standard-y-gegen-x-Diagramm haben, können Sie die einfachere fill_between-Methode verwenden (siehe auch Die Fläche zwischen zwei Linien füllen).
def draw_error_band(ax, x, y, err, **kwargs):
# Calculate normals via centered finite differences (except the first point
# which uses a forward difference and the last point which uses a backward
# difference).
dx = np.concatenate([[x[1] - x[0]], x[2:] - x[:-2], [x[-1] - x[-2]]])
dy = np.concatenate([[y[1] - y[0]], y[2:] - y[:-2], [y[-1] - y[-2]]])
l = np.hypot(dx, dy)
nx = dy / l
ny = -dx / l
# end points of errors
xp = x + nx * err
yp = y + ny * err
xn = x - nx * err
yn = y - ny * err
vertices = np.block([[xp, xn[::-1]],
[yp, yn[::-1]]]).T
codes = np.full(len(vertices), Path.LINETO)
codes[0] = codes[len(xp)] = Path.MOVETO
path = Path(vertices, codes)
ax.add_patch(PathPatch(path, **kwargs))
_, axs = plt.subplots(1, 2, layout='constrained', sharex=True, sharey=True)
errs = [
(axs[0], "constant error", 0.05),
(axs[1], "variable error", 0.05 * np.sin(2 * t) ** 2 + 0.04),
]
for i, (ax, title, err) in enumerate(errs):
ax.set(title=title, aspect=1, xticks=[], yticks=[])
ax.plot(x, y, "k")
draw_error_band(ax, x, y, err=err,
facecolor=f"C{i}", edgecolor="none", alpha=.3)
plt.show()

Referenzen
Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt
Gesamtlaufzeit des Skripts: (0 Minuten 1,399 Sekunden)