Noter
Cliquez ici pour télécharger l'exemple de code complet
Courbe avec bande d'erreur #
Cet exemple illustre comment tracer une bande d'erreur autour d'une courbe paramétrée.
Une courbe paramétrée x(t), y(t) peut être tracée directement à l'aide de plot
.
[None]
Une bande d'erreur peut être utilisée pour indiquer l'incertitude de la courbe. Dans cet exemple, nous supposons que l'erreur peut être donnée sous la forme d'une erreur scalaire qui décrit l'incertitude perpendiculaire à la courbe en chaque point.
Nous visualisons cette erreur sous la forme d'une bande colorée autour du chemin à l'aide d'un
PathPatch
. Le patch est créé à partir de deux segments de chemin (xp, yp) et
(xn, yn) qui sont décalés de +/- err perpendiculairement à la courbe (x, y) .
Remarque : Cette méthode d'utilisation de a PathPatch
est adaptée aux courbes arbitraires en 2D. Si vous n'avez qu'un tracé y-vs.-x standard, vous pouvez utiliser la
fill_between
méthode la plus simple (voir aussi
Remplir la zone entre les lignes ).
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.figure(constrained_layout=True)
.subplots(1, 2, 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()
Références
L'utilisation des fonctions, méthodes, classes et modules suivants est illustrée dans cet exemple :