impow中的颜色值为matplotlib?

8 python matplotlib

当我在matplotlib中使用imshow()时,我想知道我点击的一个点的颜色值.有没有办法通过matplotlib中的事件处理程序找到这些信息(与点击的x,y坐标相同)?如果没有,我如何找到这些信息?

具体来说,我正在考虑这样的案例:

imshow(np.random.rand(10,10)*255, interpolation='nearest')
Run Code Online (Sandbox Code Playgroud)

谢谢!--Erin

Pau*_*aul 10

这是一个可以通过的解决方案.它只适用于interpolation = 'nearest'.我仍在寻找一种更清晰的方法来从图像中检索插值(而不是舍入拾取的x,y并从原始数组中选择.)无论如何:

from matplotlib import pyplot as plt
import numpy as np

im = plt.imshow(np.random.rand(10,10)*255, interpolation='nearest')
fig = plt.gcf()
ax = plt.gca()

class EventHandler:
    def __init__(self):
        fig.canvas.mpl_connect('button_press_event', self.onpress)

    def onpress(self, event):
        if event.inaxes!=ax:
            return
        xi, yi = (int(round(n)) for n in (event.xdata, event.ydata))
        value = im.get_array()[xi,yi]
        color = im.cmap(im.norm(value))
        print xi,yi,value,color

handler = EventHandler()

plt.show()
Run Code Online (Sandbox Code Playgroud)