在backtrader
的matplotlib
实现https://youtu.be/m6b4Ti4P2HA?t=2008的这个视频中,我可以看到一个默认的、非常快的、节省CPU的十字线鼠标光标似乎存在于matplotlib
中。
我希望在matplotlib
中使用相同类型的鼠标光标来绘制简单的多子图,如下所示:
import numpy as np
import matplotlib
matplotlib.use('QT5Agg')
matplotlib.rcParams['figure.figsize'] = (20.0, 22.0)
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2, sharex=ax1)
ax1.plot(np.array(np.random.rand(100)))
ax2.plot(np.array(np.random.rand(100)))
plt.show()
所以,如果我把鼠标放在下面的子图中,我想直接而精确地看到,下面图中的x/y值对应于上面图中的值对。
我已经找到了其他解决方案来做到这一点,但与视频中的实现相比,它们似乎非常缓慢。
2条答案
按热度按时间n1bvdmb61#
您可以通过mplcursors创建十字光标。
sel.extras.append()
会在绘制新光标时删除旧光标。使用sel.annotation.set_text
,您可以调整显示的弹出注解。要省略注解,请使用sel.annotation.set_visible(False)
。要在另一个子图中找到相应的y值,可以使用np.interp
和从曲线中提取的数据。下面是一个替代实现,它将数据存储在全局变量中并移动行(而不是删除并重新创建行):
yeotifhr2#
很抱歉我的回答太晚了,但是我被上面建议的代码吓了一跳,当matplotlib上有一行程序来做一个简单的十字准线穿过不同的轴。它不会显示你的标签,但是它的CPU很轻。