交互式图像绘制与matplotlib



我正在从Matlab过渡到NumPy/matplotlib。matplotlib中似乎缺少的一个功能是交互式绘图。缩放和平移是有用的,但对我来说一个常见的用例是:

我使用imshow()绘制灰度图像(Matlab和matplotlib在这方面都做得很好)。在出现的图中,我想确定一个特定的像素(它的x和y坐标)并获得它的值。

这在Matlab图中很容易做到,但是在matplotlib中有办法做到这一点吗?

这看起来很接近,但似乎不适合图像。

自定义事件处理程序是您需要的。这并不难,但也不是"就能行"。

这个问题似乎很接近你想要的。如果你需要任何澄清,我很乐意补充更多的信息。

我相信你已经设法做到了。稍微修改了一下链接,我编写了以下代码,一旦在绘图区域内单击,就会显示x和y坐标。

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

此外,这应该比在烹饪书链接中提供的更容易理解交互式绘图的基础知识。

注:这个程序将提供精确的像素位置。该位置的值应该为我们提供相应像素的灰度值。

也可以帮助以下:http://matplotlib.sourceforge.net/users/image_tutorial.html

最新更新