Tengo varias (27) imágenes representadas en matrices en 2D que estoy viendo con imshow(). Necesito hacer un acercamiento exacto en cada imagen. Sé que puedo hacer zoom manualmente, pero esto es tedioso y no lo suficientemente preciso. ¿Hay alguna manera de especificar programáticamente una sección específica de la imagen para mostrar en lugar de todo?Matplotlib imshow función de zoom?
14
A
Respuesta
11
Usted podría utilizar plt.xlim
y plt.ylim
para establecer la región a ser trazado:
import matplotlib.pyplot as plt
import numpy as np
data=np.arange(9).reshape((3,3))
plt.imshow(data)
plt.xlim(0.5, 1.5)
plt.ylim(0.5,1.5)
plt.show()
3
Si usted no necesita el resto de la imagen, se puede definir una función que recortar la imagen en las coordenadas que desea y luego mostrar la imagen recortada.
Nota: aquí 'x' e 'y' son la vista xey (eje horizontal y eje vertical en la imagen, respectivamente), lo que significa que está invertido en comparación con la x real (fila) ey (columna) de la matriz NumPy.
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
def crop(image, x1, x2, y1, y2):
"""
Return the cropped image at the x1, x2, y1, y2 coordinates
"""
if x2 == -1:
x2=image.shape[1]-1
if y2 == -1:
y2=image.shape[0]-1
mask = np.zeros(image.shape)
mask[y1:y2+1, x1:x2+1]=1
m = mask>0
return image[m].reshape((y2+1-y1, x2+1-x1))
image = sp.lena()
image_cropped = crop(image, 240, 290, 255, 272)
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
ax1.imshow(image)
ax2.imshow(image_cropped)
plt.show()
Cuestiones relacionadas
- 1. imshow para 3D? (Python/Matplotlib)
- 2. diagrama de matplotlib e imshow
- 3. python matplotlib imshow() marcas personalizadas
- 4. ¿Qué matplotlib `imshow (interpolación = 'más cercano')` hacer?
- 5. Superposición de diagramas de imshow en matplotlib
- 6. ¿Valores de color en imshow para matplotlib?
- 7. Matplotlib imshow() estirar para "ajustar el ancho"
- 8. ejes no lineales para imshow en matplotlib
- 9. Invertir la imagen mostrada por imshow en matplotlib
- 10. Configuración de puntos sin datos en blanco con Matplotlib imshow
- 11. Eje de reescalado en Matplotlib imshow bajo llamada a función única
- 12. Gráfico Matplotlib zoom con rueda de desplazamiento
- 13. Matplotlib imshow offset para coincidir con el eje?
- 14. Prevenir el anti-aliasing para imshow en matplotlib
- 15. Matplotlib/Pyplot: ¿Cómo hacer zoom de subparcelas juntas?
- 16. Definición de un mapa de colores discreto para imshow en matplotlib
- 17. Matplotlib: no hay efecto de set_data en imshow para el gráfico
- 18. Cómo trazar una imagen con un eje y no lineal con Matplotlib usando imshow?
- 19. ¿Cómo puedo trazar los valores NaN como un color especial con imshow en matplotlib?
- 20. matplotlib: límites cuando se usa plot e imshow en los mismos ejes
- 21. ¿Es posible visualizar un conjunto 2D como un trazado polar usando Matplotlib imshow()?
- 22. /zoom a la función actual ubicación (MapKit)
- 23. pyplot haciendo zoom en
- 24. Conteo rectangular de Python Matplotlib
- 25. figura de imshow() es demasiado pequeña
- 26. ¿Cómo puedo dibujar un diagrama imshow log-normalizado con una barra de colores que represente los datos brutos en matplotlib
- 27. Cómo forzar el mapeo de color a un rango dinámico más grande que la entrada particular a imshow en matplotlib
- 28. matplotlib vinculados x ejes con ejes y de escalado automático en el zoom
- 29. Apagado por un error en imshow?
- 30. deslizador de zoom QGraphicsView
Gracias! Me di cuenta de que también puedo recortar la vista previa de la matriz, pero su método conserva el resto de la matriz. – Andruf
En la excelente introducción * [Comenzando con Python para la ciencia] (http://scipy-lectures.github.io/) *, esto está en la sección matplotlib, * [1.4. Matplotlib: trazado, 1.4.2.4. Establecer límites] (http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#setting-limits) *. –