/ / Trazado interactivo de imágenes con matplotlib - matplotlib

Gráficos de imágenes interactivas con matplotlib - matplotlib

Estoy haciendo la transición de Matlab a NumPy / matplotlib. Una característica de matplotlib que parece faltar es el trazado interactivo. Zoom y panorámica es útil, pero un caso de uso frecuente para mí es este:

Trazo una imagen en escala de grises usando imshow() (Tanto Matlab como matplotlib hacen bien en esto). En la figura que aparece, me gustaría señalar un determinado píxel (sus coordenadas x e y) y obtener su valor.

Esto es fácil de hacer en la figura de Matlab, pero ¿hay alguna forma de hacerlo en matplotlib?

Esta parece estar cerca, pero no parece estar hecho para imágenes.

Respuestas

2 para la respuesta № 1

Los controladores de eventos personalizados son lo que va a necesitar para esto. No es difícil, pero tampoco es "simplemente funciona".

Esta pregunta Parece bastante cerca de lo que buscas. Si necesita alguna aclaración, me complacería agregar más información.


1 para la respuesta № 2

Estoy seguro de que ya has logrado hacerlo. Modificando ligeramente (!) enlazar, He escrito el siguiente código que le da las coordenadas x e y una vez que se hace clic dentro del área de dibujo.

from pylab import *
import sys
from numpy import *
from matplotlib import pyplot

class Test:

def __init__(self, x, y):
self.x = x
self.y = y

def __call__(self,event):
if event.inaxes:
print("Inside drawing area!")
print("x: ", event.x)
print("y: ", event.y)
else:
print("Outside drawing area!")

if __name__ == "__main__":
x = range(10)
y = range(10)
fig = pyplot.figure("Test Interactive")
pyplot.scatter(x,y)
test = Test(x,y)
connect("button_press_event",test)
pyplot.show()

Además, esto debería facilitar la comprensión de los conceptos básicos de la trama interactiva que el que se proporciona en el libro de cocina. enlazar.

P.S .: Este programa proporcionaría la ubicación exacta de píxeles. El valor en esa ubicación nos debe dar el valor en escala de grises del píxel respectivo.

También lo siguiente podría ayudar: http://matplotlib.sourceforge.net/users/image_tutorial.html