简介
mpldatacursor包可以为matplotlib提供交互式的数据光标(弹出式注释框)。
它的典型功能是:
鼠标左键单击图表数据元素时会弹出文本框显示最近的数据元素的坐标值。
鼠标右键单击文本框取消显示数据光标。
按d键时切换显示\关闭数据光标。
安装
如果matplotlib版本低于3.3可以直接使用pip安装
pip install mpldatacursor
如果matplotlib版本高于3.3,虽然pip安装成功,但是运行案例时会出现AttributeError: 'ScalarFormatter' object has no attribute 'pprint_val'错误。
通过查看源码可知:
try:
# Again, older versions of mpl
return formatter.pprint_val(x)
except AttributeError:
# 3.3.0 or later
return formatter.format_data_short(x)
通过分析,预计是因为使用了国内pip源,mpldatacursor包还未修复该问题(pip 安装的 mpldatacursor包版本号是0.7.1)。
下载源码,进行源码安装(源码安装的 mpldatacursor包版本号是0.7.dev0)。
python setup.py install
基本应用(官方实例)解析
应用流程
mpldatacursor包基本应用方式比较简单:
从mpldatacursor包中导入datacursor函数。
应用datacursor函数。
包结构
查看源码可知,mpldatacursor包的结构如下:
mpldatacursor
convenience.py
datacursor.py
pick_info.py
__init__.py
datacursor函数定义在convenience.py中,datacursor函数的返回值是DataCursor类实例。
DataCursor类定义在datacursor.py中。
pick_info.py定义了一系列和弹出文本框相关的函数,供DataCursor类调用。
datacursor函数定义
由 datacursor函数定义可知:
datacursor函数可以不提供参数,这样图像内所有数据元素都会应用交互式数据光标。
datacursor函数可以指定哪些数据元素应用交互式数据光标。
def datacursor(artists=None, axes=None, **kwargs):
"""
Create an interactive data cursor for the specified artists or specified
axes. The data cursor displays information about a selected artist in a
"popup" annotation box.
If a specific sequence of artists is given, only the specified artists will
be interactively selectable. Otherwise, all manually-plotted artists in
*axes* will be used (*axes* defaults to all axes in all figures).
Parameters
-----------
artists : a ma