我正在从Matlab过渡到NumPy / matplotlib。 matplotlib中似乎缺少的一个功能是交互式绘图。 Zooming and panning很有用,但对我而言,一个常见的用例是:
我使用imshow()
绘制灰度图像(Matlab和matplotlib都做得很好)。在出现的图中,我想精确定位一个像素(它的x和y坐标)并得到它的值。
这在Matlab图中很容易做到,但有没有办法在matplotlib中做到这一点?
This似乎很接近,但似乎并不适用于图像。
答案 0 :(得分:2)
自定义事件处理程序是您需要的。这并不难,但也不是“它只是起作用”。
This question似乎非常接近你所追求的。如果您需要任何澄清,我很乐意添加更多信息。
答案 1 :(得分:1)
我相信你已经设法做到了这一点。略微(!)修改link,我编写了下面的代码,它在绘图区域内点击了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()
此外,这将使您更容易理解交互式绘图的基础知识,而不是烹饪书link中提供的基础知识。
P.S。:该程序将提供精确的像素位置。该位置的值应该为我们提供相应像素的灰度值。
以下内容也可以提供帮助: http://matplotlib.sourceforge.net/users/image_tutorial.html