Quelqu'un sait-il comment mettre un nuage de points au premier plan dans matplotlib? Je dois afficher le nuage de points au-dessus du contour, mais par défaut, il est tracé en dessous ...
Merci d'avance!
Vous pouvez choisir manuellement dans quel ordre les différents tracés doivent être affichés avec le paramètre zorder
de par ex. la méthode scatter
.
Pour le démontrer, consultez le code ci-dessous, où le nuage de points dans le sous-tracé de gauche a zorder=1
et dans la sous-intrigue de droite, il a zorder=-1
. L'objet avec le plus haut zorder
est placé en haut. Cela signifie que la diffusion sera placée au-dessus du contour dans le premier sous-tracé, tandis qu'elle est placée en dessous dans le deuxième sous-tracé.
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10.0 * (Z2 - Z1)
norm = cm.colors.Normalize(vmax=abs(Z).max(), vmin=-abs(Z).max())
cmap = cm.PRGn
levels = np.arange(-2.0, 1.601, 0.4)
fig, axes = plt.subplots(1,2, sharey=True)
for ax, zord in Zip(axes, [1, -1]):
ax.contourf(X, Y, Z, levels,
cmap=cm.get_cmap(cmap, len(levels)-1),
norm=norm)
ax.autoscale(False) # To avoid that the scatter changes limits
ax.scatter(np.random.uniform(-3,3,10),
np.random.uniform(-2,2,10),
zorder=zord)
ax.set_title('Scatter with zorder={0}'.format(zord))