python画十字_matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)

本文介绍了如何使用matplotlib的Cursor类和自定义方式实现鼠标十字光标。包括Cursor类的使用,以及三种不同实现:简易十字光标、优化的BlittedCursor和SnappingCursor,后者能自动吸附到最近的数据点。
摘要由CSDN通过智能技术生成

matplotlib在widgets模块提供Cursor类用于支持十字光标的生成。另外官方还提供了自定义十字光标的实例。

widgets模块Cursor类源码

class Cursor(AxesWidget):

"""

A crosshair cursor that spans the axes and moves with mouse cursor.

For the cursor to remain responsive you must keep a reference to it.

Parameters

----------

ax : `matplotlib.axes.Axes`

The `~.axes.Axes` to attach the cursor to.

horizOn : bool, default: True

Whether to draw the horizontal line.

vertOn : bool, default: True

Whether to draw the vertical line.

useblit : bool, default: False

Use blitting for faster drawing if supported by the backend.

Other Parameters

----------------

**lineprops

`.Line2D` properties that control the appearance of the lines.

See also `~.Axes.axhline`.

Examples

--------

See :doc:`/gallery/widgets/cursor`.

"""

def __init__(self, ax, horizOn=True, vertOn=True, useblit=False,

**lineprops):

AxesWidget.__init__(self, ax)

self.connect_event('motion_notify_event', self.onmove)

self.connect_event('draw_event', self.clear)

self.visible = True

self.horizOn = horizOn

self.vertOn = vertOn

self.useblit = useblit and self.canvas.supports_blit

if self.useblit:

lineprops['animated'] = True

self.lineh = ax.axhline(ax.get_ybound()[0], visible=False, **lineprops)

self.linev = ax.axvline(ax.get_xbound()[0], visible=False, **lineprops)

self.background = None

self.needclear = False

def clear(self, event):

"""Internal event handler to clear the cursor."""

if self.ignore(event):

return

if self.useblit:

self.background = self.canvas.copy_from_bbox(self.ax.bbox)

self.linev.set_visible(False)

self.lineh.set_visible(False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值