使用matplotlib进行交互式图像打印

使用matplotlib进行交互式图像打印,matplotlib,Matplotlib,我正在从Matlab过渡到NumPy/matplotlib。matplotlib中似乎缺少的一个功能是交互式打印。是有用的,但对我来说,一个常见的用例是: 我使用imshow()(Matlab和matplotlib在这方面都做得很好)绘制灰度图像。在接下来的图中,我想精确定位某个像素(它的x和y坐标)并得到它的值 在Matlab图中很容易做到这一点,但是在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()
此外,这应该比烹饪书中提供的更容易理解交互式绘图的基础知识

注:该程序将提供精确的像素位置。该位置的值应给出相应像素的灰度值

以下内容也可能有所帮助:

这看起来很有希望。我试试看,然后告诉你。我搜索时没有找到那个问题。出于我的目的,我不需要插值,因此从图像数组中检索值对我来说是最好的方法。我很欣赏matplotlib的可扩展性,但是如果有像这样的内置功能就太好了。很抱歉耽搁了。是的,你对这个问题的回答有一个非常漂亮的事件处理程序。它可以很好地满足我的需要,尽管在鼠标悬停而不是点击时在图形的状态栏中显示信息会更酷。如果我以后有时间/兴趣,我会看看我能做些什么。