对于在外部窗口中显示的matplotlib(使用matplotlib.use('TkAgg')
),以下代码段也正确显示了日期时间x轴的x / y光标鼠标悬停:
import matplotlib
matplotlib.use('TkAgg')
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
plt.plot([datetime.now(), datetime(2020,6,6)], [1,2], "-o")
plt.gca().fmt_xdata = lambda x: mdates.num2date(x).strftime("%Y-%m-%d")
plt.show()
(请参阅:https://stackoverflow.com/a/53650695/10698244)
对于Google colab,存在一种解决方法,当用鼠标悬停在画布上时,该位置也显示x / y位置(请参阅:https://stackoverflow.com/a/54907775/10698244):
!pip install mpld3
!pip install "git+https://github.com/javadba/mpld3@display_fix"
import mpld3
from mpld3 import plugins
fig, ax = plt.subplots()
df = pd.DataFrame({"a": [1, 2, 3], "b": [40, 5, 60]})
ax.plot(df, "-o", markersize=2)
plugins.connect(fig, plugins.MousePosition(fontsize=14))
mpld3.display()
不幸的是,当使用日期时间轴时,这不起作用。在这种情况下,没有显示x / y光标位置(例如,如果采用了此数据框:)
df2 = pd.DataFrame({"a": [pd.datetime(2019,1,12,5,30,1), pd.datetime(2019,1,13,5,30,1), pd.datetime(2019,1,14,5,30,1)], "b": [40, 5, 60]})
df2.set_index("a",inplace=True)
我的问题是,用鼠标悬停在画布上时,mpld3
和日期时间x轴也应正确地位于x / y光标正上方吗?