简介
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
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。