¿Cómo igualo las escalas del eje x y el eje y?

2 minutos de lectura

Avatar de usuario de Sibbs Gambling
Sibbs juegos de azar

¿Cómo puedo crear una trama donde las escalas de x-axis y y-axis ¿son lo mismo?

Esta proporción igual debe mantenerse incluso si cambio el tamaño de la ventana. Actualmente, mi gráfico se escala junto con el tamaño de la ventana.

Lo intenté:

plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')

  • Intente ser un poco menos abrasivo cuando interactúe con otros en SO. Estás recibiendo ayuda de la amabilidad de las personas, así que actúa con un poco menos de derecho.

    – tacoswell

    1 de agosto de 2013 a las 13:57

  • para 3d, tienes que hacer un poco más de trabajo: stackoverflow.com/questions/13685386/…

    – Trevor Boyd Smith

    21 oct 2016 a las 16:07

avatar de usuario de tacaswell
tacaswell

Usar Axes.set_aspect en la siguiente manera:

from matplotlib import pyplot as plt
plt.plot(range(5))
plt.xlim(-3, 3)
plt.ylim(-3, 3)
ax = plt.gca()
ax.set_aspect('equal', adjustable="box")
plt.draw()

  • ¡Impresionante! De hecho, funciona a las mil maravillas. ¿Podría por favor decirme qué plt.plot(range(5)) y plt.gca().set_aspect('equal', adjustable='box') hacer, si no te importa? Además, noto que aunque no tengo plt.draw(), la trama seguirá apareciendo. Entonces, ¿de qué sirve?

    – Juego de Sibbs

    2 de agosto de 2013 a las 1:43

  • la plot es solo tener algo que mostrar. Para el set_aspect lea el enlace de documentación. los draw es solo para asegurarse de que se renderice.

    – tacoswell

    2 de agosto de 2013 a las 1:49

  • tener algunos datos falsos para trazar (debería haber trazado una línea recta).

    – tacoswell

    2 de agosto de 2013 a las 2:08

  • @perfectionm1ng no te preocupes, me tomó un tiempo darme cuenta de lo que estabas preguntando.

    – tacoswell

    2 de agosto de 2013 a las 2:40

  • ¿Hay alguna manera de hacer esto sin tener que especificar exactamente los límites? Hubiera esperado que hubiera un comando simple para obtener un gráfico cuadrado con la misma escala y marcas para ambos ejes. Gracias

    – Confundido

    25 de febrero de 2020 a las 10:34

avatar de usuario de myx
myx

plt.axis('scaled')

funciona bien para mí.

  • También funcionó para mí. Solo asegúrese de usar esto antes de establecer límites/marcas, ya que se volverá a escalar automáticamente.

    – Andrés

    27 de mayo de 2019 a las 12:09

  • Lo siento, plt.axis(‘scaled’) no funcionó para mí en Python 3.7 y matplotlib – matplotlib==3.1.0 ¡Sin embargo, plt.axis(‘square’) funcionó!

    – rishi jain

    11 oct 2019 a las 10:15


  • @rishijain ValueError: cadena no reconocida al cuadrado del eje; probar encendido o apagado

    – Mona Jalal

    21 de enero a las 18:54

  • @MonaJalal es plt.axis('square') no plt.axis('squared')

    – par

    3 sep a las 22:12

Ver la documentación en plt.axis(). Este:

plt.axis('equal')

no funciona porque cambia los límites del eje para que los círculos parezcan circulares. Lo que quieres es:

plt.axis('square')

Esto crea una parcela cuadrada con ejes iguales.

Avatar de usuario de Dman2
Dman2

Prueba algo como:

import pylab as p
p.plot(x,y)
p.axis('equal')
p.show()

puedes estirar la trama al cuadrado usando esto:

fig = plt.figure(figsize=(1, 1))

¿Ha sido útil esta solución?