我正在从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