开发者

Interactive image plotting with matplotlib

开发者 https://www.devze.com 2023-04-10 09:29 出处:网络
I am transitioning from Matlab to NumPy/matplotlib. A feature in matplotlib that seems to be lacking is interactive plott开发者_如何学Going. Zooming and panning is useful, but a frequent use case for

I am transitioning from Matlab to NumPy/matplotlib. A feature in matplotlib that seems to be lacking is interactive plott开发者_如何学Going. Zooming and panning is useful, but a frequent use case for me is this:

I plot a grayscale image using imshow() (both Matlab and matplotlib do well at this). In the figure that comes up, I'd like to pinpoint a certain pixel (its x and y coordinates) and get its value.

This is easy to do in the Matlab figure, but is there a way to do this in matplotlib?

This appears to be close, but doesn't seem to be meant for images.


custom event handlers are what you are going to need for this. It's not hard, but it's not "it just works" either.

This question seems pretty close to what you are after. If you need any clarification, I'd be happy to add more info.


I'm sure you have managed to do this already. Slightly(!) modifying the link, I've written the following code that gives you the x and y coordinates once clicked within the drawing area.

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()

Additionally, this should make it easier to understand the basics of interactive plotting than the one provided in the cookbook link.

P.S.: This program would provide the exact pixel location. The value at that location should give us the grayscale value of respective pixel.

Also the following could help: http://matplotlib.sourceforge.net/users/image_tutorial.html

0

精彩评论

暂无评论...
验证码 换一张
取 消