python - una - fijar ejes matplotlib
Cómo establecer xlim y ylim para una subtrama en matplotlib (1)
Esta pregunta ya tiene una respuesta aquí:
Me gustaría limitar los ejes X e Y en matplotlib, pero para una subparcela específica. Como puedo ver, la figura de la subtrama no tiene ninguna propiedad de eje. ¡Quiero, por ejemplo, cambiar solo los límites para la segunda trama!
import matplotlib.pyplot as plt
fig=plt.subplot(131)
plt.scatter([1,2],[3,4])
fig=plt.subplot(132)
plt.scatter([10,20],[30,40])
fig=plt.subplot(133)
plt.scatter([15,23],[35,43])
plt.show()
Debería aprender un poco de la interfaz OO para matplotlib, no solo la interfaz de máquina de estado. Casi toda la función plt.*
Son envoltorios delgados que básicamente hacen gca().*
.
plt.subplot
devuelve un objeto de axes
. Una vez que tenga una referencia al objeto de ejes, puede trazarlo directamente, cambiar sus límites, etc.
import matplotlib.pyplot as plt
ax1 = plt.subplot(131)
ax1.scatter([1, 2], [3, 4])
ax1.set_xlim([0, 5])
ax1.set_ylim([0, 5])
ax2 = plt.subplot(132)
ax2.scatter([1, 2],[3, 4])
ax2.set_xlim([0, 5])
ax2.set_ylim([0, 5])
y así sucesivamente para todos los ejes que desee.
o mejor, envuélvalo todo en un bucle:
import matplotlib.pyplot as plt
DATA_x = ([1, 2],
[2, 3],
[3, 4])
DATA_y = DATA_x[::-1]
XLIMS = [[0, 10]] * 3
YLIMS = [[0, 10]] * 3
for j, (x, y, xlim, ylim) in enumerate(zip(DATA_x, DATA_y, XLIMS, YLIMS)):
ax = plt.subplot(1, 3, j + 1)
ax.scatter(x, y)
ax.set_xlim(xlim)
ax.set_ylim(ylim)