¿Cómo recorto un diagrama Axes3D con relación de aspecto cuadrado?
Aquí hay un ejemplo básico:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')
# axes
for d in {f, t}:
d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)
f.dist = t.dist = 5.2 # 10 is default
plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')
r = 6
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])
t.set_xlim3d([-r, r])
t.set_ylim3d([-r, r])
t.set_zlim3d([-r, r])
f.set_axis_off()
t.set_axis_off()
plt.draw()
plt.show()
Esto es lo que obtengo:
Esto es lo que quiero:
En otras palabras, quiero que las tramas tengan una relación de aspecto cuadrada, no todas estiradas de esta manera:
y conseguí esa parte trabajando gracias ahttps://stackoverflow.com/a/31364297/125507
pero quiero que las ventanas que miran en esas parcelas sean rectangulares, con la parte superior e inferior recortadas (ya que solo habrá espacio en blanco en la parte superior e inferior y estoy generando múltiples GIF animados para que no pueda procesarlos fácilmente) a la forma que quiero).
Básicamente estoy haciendo esta animación, y quiero lo mismo pero sin todo el espacio en blanco: