Cómo invertir el eje x o y

3 minutos de lectura

avatar de usuario
hormiga oscura

Tengo un gráfico de diagrama de dispersión con un montón de coordenadas aleatorias x, y. Actualmente, el eje Y comienza en 0 y sube al valor máximo. Me gustaría que el eje Y comience en el valor máximo y suba a 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)

  • la cantidad de respuestas correctas a estas preguntas solo muestra cuán confusa es esta biblioteca en uso

    – g_uint

    3 de noviembre de 2021 a las 10:15

  • @g_uint Desde hace al menos 10 años hay una manera obvia y que está llamando a la invert_yaxis() método.

    – Veintiuna

    1 de diciembre de 2021 a las 22:49

  • @BlackJack lo que es obvio para ti podría no serlo para otro 🙂

    – g_uint

    2 de diciembre de 2021 a las 8:46

Hay una nueva API que lo hace aún más simple.

plt.gca().invert_xaxis()

y/o

plt.gca().invert_yaxis()

  • Tenga en cuenta que debe establecer los límites del eje antes de invierte el eje, de lo contrario lo desinvertirá nuevamente.

    – ElGranH

    22 de enero de 2016 a las 15:56

  • Seguro que sería bueno si se necesitara un argumento booleano. Cuando se le llama repetidamente, simplemente lo está moviendo de un lado a otro.

    – Mastín

    9 de febrero de 2021 a las 18:13

avatar de usuario
tim whitcomb

La respuesta de DisplacedAussie es correcta, pero generalmente un método más corto es simplemente invertir el eje único en cuestión:

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

donde el gca() La función devuelve la instancia actual de Axes y la [::-1] invierte la lista.

  • Esa me parece una mejor respuesta. 🙂

    – Aussie desplazado

    12 de enero de 2010 a las 23:07

También podría usar la función expuesta por el objeto de ejes del diagrama de dispersión

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

  • Me preguntaba por qué mi estructura alámbrica 3D no me daba la misma fecha que el mapa. Invertir el eje x.

    – pierre

    23 de febrero de 2021 a las 17:16

avatar de usuario
charles.fox

Si estás en ipython en pylab modo, entonces

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

la show() es necesario para que actualice la cifra actual.

  • Esto tiene la ventaja sobre las dos primeras respuestas de que corrige la orientación, no la voltea cada vez (lo cual es un problema si necesita llamarlo en un bucle).

    –Bas Swinckels

    4 de agosto de 2019 a las 14:45

Otro método similar a los descritos anteriormente es utilizar plt.ylim por ejemplo:

plt.ylim(max(y_array), min(y_array))

Este método me funciona cuando intento combinar múltiples conjuntos de datos en Y1 y/o Y2

avatar de usuario
vértigo farzad

usar ylim() podría ser el mejor enfoque para su propósito:

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

resultará:ingrese la descripción de la imagen aquí

avatar de usuario
Luis G.D.

Como alternativa, puede utilizar el matplotlib.pyplot.axis() función, que le permite invertir cualquiera de los ejes de la trama

ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))

O si prefiere invertir solo el eje X, entonces

matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))

De hecho, puedes invertir ambos ejes:

matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad