es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo requerir ejes iguales en matplotlib.

Estaba acostumbrado/a a utilizar una versión de Python en la que el código de abajo generaba ejes exactamente proporcionales.

plt.xlabel("x(Km)")
plt.ylabel("y(Km)")
plt.gca().set_aspect('equal')
ax = plt.axes()
ax.set_facecolor("black")
circle = Circle((0, 0), 2, color='dimgrey')
plt.gca().add_patch(circle)
plt.axis([-1 / u1 , 1 / u1 , -1 / u1 , 1 / u1 ])

Cuando cambié de ordenador y empecé a utilizar Python 3.7, el mismo código comenzó a generar una imagen desconfigurada. ¿Por qué ocurrió esto y cómo puedo resolverlo? Las fotos de antes y después se muestran a continuación.

Antes:
Antes

Después:
Después

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema puede ser causado por el cambio en el comportamiento predeterminado del método plt.axis() en la versión 3.0 en adelante de Matplotlib. En las versiones más nuevas, el argumento autoscale del método plt.axis() se establece en True de manera predeterminada, lo cual puede dar lugar a una escala indeseada del gráfico.

    Para resolver el problema, puedes establecer el argumento autoscale del método plt.axis() en False en tu código:

    plt.xlabel("x(Km)")
    plt.ylabel("y(Km)")
    plt.gca().set_aspect('equal')
    ax = plt.axes()
    ax.set_facecolor("black")
    circle = Circle((0, 0), 2, color='dimgrey')
    plt.gca().add_patch(circle)
    plt.axis([-1 / u1 , 1 / u1 , -1 / u1 , 1 / u1 ], autoscale=False) # establece autoscale en False
    

    Esto debería generar un gráfico con ejes exactamente proporcionales como estabas acostumbrado/a.

Comments are closed.