J'ai un graphe de dispersion avec un tas de coordonnées x, y aléatoires. Actuellement, l'axe des ordonnées commence à 0 et va jusqu'à la valeur maximale. Je voudrais que l'axe des Y commence à la valeur maximale et monte à 0.
points = [(10,5), (5,11), (24,13), (7,8)]
x_arr = []
y_arr = []
for x,y in points:
x_arr.append(x)
y_arr.append(y)
plt.scatter(x_arr,y_arr)
Une nouvelle API rend cela encore plus simple.
plt.gca().invert_xaxis()
et/ou
plt.gca().invert_yaxis()
La réponse de DisplacedAussie est correcte, mais une méthode plus courte consiste généralement à inverser le seul axe en question:
plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])
où la fonction gca()
renvoie l'instance actuelle d'Axes et le [::-1]
inverse la liste.
Utilisez matplotlib.pyplot.axis ()
axis([xmin, xmax, ymin, ymax])
Vous pouvez donc ajouter quelque chose comme ceci à la fin:
plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])
Bien que vous souhaitiez peut-être un remplissage à chaque extrémité afin que les points extrêmes ne restent pas à la frontière.
Si vous êtes en mode ipython en mode pylab
, alors
plt.gca().invert_yaxis()
show()
la show()
est nécessaire pour lui permettre de mettre à jour le chiffre actuel.
Une autre méthode similaire à celles décrites ci-dessus consiste à utiliser plt.ylim
par exemple:
plt.ylim(max(y_array), min(y_array))
Cette méthode fonctionne pour moi lorsque j'essaie de composer plusieurs jeux de données sur Y1 et/ou Y2.
Alternativement, vous pouvez utiliser la fonction matplotlib.pyplot.axis () , qui vous permet d'inverser n'importe quel axe du tracé.
ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))
Ou si vous préférez inverser uniquement l'axe X, alors
matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))
En effet, vous pouvez inverser les deux axes:
matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))
Vous pouvez également utiliser une fonction exposée par l’objet axes du nuage de points.
scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()