通过鼠标悬停突出显示seaborn热图中的单元格

时间:2016-04-24 18:36:19

标签: python matplotlib seaborn

我正在尝试将运动事件与seaborn热图关联起来,这样当我将鼠标悬停在单元格中时,此单元格会在边框中突出显示。到目前为止,我设法通过将motion_notify_event与画布相关联来实现:

import matplotlib.patches as mpatches

self.canvash.mpl_connect('motion_notify_event', self.onMotion)

(...)

def onMotion(self,event):
    if not event.inaxes: 
        return 

    xint = int(event.xdata)
    yint = int(event.ydata)

    self.axh.add_patch(mpatches.Rectangle((xint, yint),1,1,fill=False,edgecolor='blue',linewidth=0.5))

    self.canvash.draw()

这很有效,当我将鼠标悬停在鼠标上时,细胞会突出显示。问题是所有单元格都会突出显示,结果如下:

enter image description here

我只想在移动时突出显示鼠标下的单元格,以便只有一个是活动的。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我能够找到一个解决方案,多亏了Paul H.我只需要保存补丁然后删除它就可以了,这是解决方案:

def onMotion(self,event):

    if not event.inaxes: 
        return

    xint = int(event.xdata)
    yint = int(event.ydata)

    self.rect = mpatches.Rectangle((xint, yint),1,1,fill=False,linestyle='dashed', edgecolor='red',linewidth=2.0)

    self.axh.add_patch(self.rect)

    self.canvash.draw()   

    self.rect.remove()