通过鼠标悬停突出显示 seaborn 热图中的单元格
Highlight cell in seaborn heatmap through mouse hover
我正在尝试将运动事件关联到 seaborn 热图,这样当我将鼠标悬停在一个单元格中时,该单元格会在边框中突出显示。到目前为止,我设法做到了,方法是将 motion_notify_event
关联到 canvas:
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()
这有效,当我悬停鼠标时,单元格会突出显示。问题是所有的单元格都会被高亮显示,结果是这样的:
我只想在鼠标移动时突出显示鼠标下方的单元格,以便只有一个处于活动状态。
我该怎么做?
多亏了 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()
我正在尝试将运动事件关联到 seaborn 热图,这样当我将鼠标悬停在一个单元格中时,该单元格会在边框中突出显示。到目前为止,我设法做到了,方法是将 motion_notify_event
关联到 canvas:
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()
这有效,当我悬停鼠标时,单元格会突出显示。问题是所有的单元格都会被高亮显示,结果是这样的:
我只想在鼠标移动时突出显示鼠标下方的单元格,以便只有一个处于活动状态。
我该怎么做?
多亏了 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()