简介
mplcursors
包也可以为matplotlib
提供交互式的数据光标(弹出式注释框),它的灵感来源于mpldatacursor
包,可以认为是基于mpldatacursor
包的二次开发。
相对于mpldatacursor
包,mplcursors
包最大的特点就是提供了一些相对底层的API,这样功能实现更加灵活。
安装
pip install mplcursors
基本应用
mplcursors
包的基本应用方法与mpldatacursor
包类似,直接应用cursor
函数即可。
基本操作方法
- 鼠标左键单击图表数据元素时会弹出文本框显示最近的数据元素的坐标值。
- 鼠标右键单击文本框取消显示数据光标。
- 按d键时切换显示\关闭数据光标。
案例源码
import matplotlib.pyplot as plt import numpy as np import mplcursors data = np.outer(range(10), range(1, 5)) fig, ax = plt.subplots() lines = ax.plot(data) ax.set_title("Click somewhere on a line.\nRight-click to deselect.\n" "Annotations can be dragged.") mplcursors.cursor(lines) # or just mplcursors.cursor() plt.show()
mplcursors自定义应用
mpldatacursor
包中自定义功能主要通过向datacursor
函数传递实参实现。
mplcursors
包中的cursor
函数对标mpldatacursor
包中的datacursor
函数,但是在参数上发生了变化,保留了artists
、hover
、bindings
、multiple
、highlight
等类似参数。
mplcursors
包增加Selection
对象(底层为namedtuple
)表示选择的数据元素的属性。
当选中某个数据点时,可以通过添加(add
)或删除(remove
)事件触发、注册回调函数实现功能,回调函数只有一个参数,及选择的数据点。
在注册回调函数时,mplcursors
包支持使用装饰器。
mpldatacursor与mplcursors API对比
下面以修改显示文本信息为例对比下mpldatacursor
与mplcursors
的不同实现方式。
mpldatacursor实现方式
import matplotlib.pyplot as plt import numpy as np from mpldatacursor import datacursor ax=plt.gca() labels = ["a", "b", "c"] for i in range(3): ax.plot(i, i,'o', label=labels[i]) datacursor(formatter='{label}'.format) plt.show()
mplcursors
实现方式一
import matplotlib.pyplot as plt import numpy as np import mplcursors ax=plt.gca() lines = ax.plot(range(3), range(3), "o") labels = ["a", "b", "c"] cursor = mplcursors.cursor(lines) cursor.connect( "add", lambda sel: sel.annotation.set_text(labels[sel.target.index])) plt.show()
mplcursors
实现方式二
import matplotlib.pyplot as plt import numpy as np import mplcursors ax=plt.gca() lines = ax.plot(range(3), range(3), "o") labels = ["a", "b", "c"] cursor = mplcursors.cursor(lines) @cursor.connect("add") def on_add(sel): sel.annotation.set_text(labels[sel.target.index]) plt.show()
结论
mplcursors
包实现的功能与mpldatacursor
包非常相似。相对而言mplcursors
包的API更加灵活,通过connect
函数或者装饰器自定义属性耦合性更弱,便于实现绘图与数据光标实现的分离。
参考
https://mplcursors.readthedocs.io/en/stable/
https://github.com/anntzer/mplcursors
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 群星《时光正好 电视剧影视原声带》[FLAC/分轨][234.11MB]
- 英雄联盟s14韩国队种子怎么排名 s14韩国队种子队伍排名一览
- 英雄联盟s14四强开始时间 英雄联盟s14四强赛程表一览
- 英雄联盟s14四强赛在哪举办 英雄联盟s14半决赛举办地点一览
- 《三国志8重制版》全女将一览
- 《英雄联盟》Faker第七次晋级决赛
- 《历史时代3》下载方法
- EchoVocalEnsemble-Innocence(2024)[WAV]
- BuceadorVoltio-Satelite(2024)[24-48]FLAC
- VilmPribyl-SmetanaDalibor(2024)[24Bit-WAV]
- 高通骁龙8至尊版亮相:性能领先A18 Pro达到40%,更有多项首发
- 2024骁龙峰会:自研Oryon CPU登陆手机、汽车丨骁龙8至尊版、骁龙至尊版汽车平台
- 稀有度拉满!首款小马宝莉背卡引爆网络热梗
- 群星《全糖少爷1 影视原声带》[320K/MP3][98.36MB]
- 群星《全糖少爷1 影视原声带》[FLAC/分轨][420.97MB]