我正在尝试获得 2 个不同变量的散点图,一组散点是在空气阻力影响下弹丸的高度值,一个是没有空气阻力的弹丸。我可以使用一组散点,但不能同时使用这两个散点。我正在使用mplcursors 库在将鼠标悬停在一个点上时显示注释标签。这是相关代码:
import numpy as np
from matplotlib import pyplot as plt
import mplcursors
# ...
fig, ax = plt.subplots()
nair_scatter = ax.scatter(nairRangeValues, nairHeightValues, c="blue", label="No air resistance", s=3)
air_scatter = ax.scatter(airRangeValues, airHeightValues, c="red", label="Air resistance", s=3)
ax.legend()
plt.xlabel("Range", size=10)
plt.ylabel("Height", size=10)
crs = mplcursors.cursor(ax,hover=True)
crs.connect("add", lambda sel: sel.annotation.set_text(
'Range {} m\nHeight {} m\nVelocity {} m/s at angle {} degrees\nDisplacement {} m\nTime of flight {} s' .format(
(sel.target[0]), (sel.target[1]),
(airVelocityValues[get_index(airRangeValues, sel.target[0])]),
(airAngleValues[get_index(airRangeValues, sel.target[0])]),
(airDisplacementValues[get_index(airRangeValues, sel.target[0])]),
(airTimeValues[get_index(airRangeValues, sel.target[0])]) ) ) )
crs2 = mplcursors.cursor(ax,hover=True)
crs2.connect("add", lambda ok: ok.annotation.set_text(
'Range {} m\nHeight {} m' .format(ok.target[0], ok.target[1])))
plt.show()
这有一些问题。首先,它给了我一个巨大的错误,并StopIteration
在最后说。另一个是它在一组散点上显示了正确的标签,但也显示了同一散点图的 crs2 值,而不是另一个。如果有人可以帮助我欣赏它,我不知道如何让他们能够对每个散点集都是独一无二的。