314 votes

PyPlot inverse axe Y

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 ordonnées 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)
 

645voto

Demitri Points 1315

Une nouvelle API rend cela encore plus simple.

 plt.gca().invert_xaxis()
 

et / ou

 plt.gca().invert_yaxis()
 

67voto

Tim Whitcomb Points 5267

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 où [::-1] inverse la liste.

20voto

DisplacedAussie Points 2872

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.

18voto

godelbach Points 53

Si vous êtes en mode ipython en mode pylab , alors

 plt.gca().invert_yaxis()
show()
 

le show() est requis pour le mettre à jour le chiffre actuel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X