mpldatacursor Scatter Plot 点颜色信息

mpldatacursor Scatter Plot point colour information

我有一个带有颜色比例的散点图,其中每个标绘点都与另一个值相关联。这是一种懒惰的解决方法,可以制作 "countour plot" 风格的图像,而无需对数据点进行正则化。为了使分析更容易,我使用 mpldatacursor 在绘图上生成交互式注释,并且我有一个自定义格式化程序,它可以很好地显示坐标:

datacursor(scatter,
           formatter='$T=${x:.2f}$^\circ$C\n$I=${y:.2f}$\,$mA\n$\Delta F=$$\,$THz'.format,
           draggable=True)

但我真正想要的是在第三行 $\Delta F=$$\,$THz 中包含一条语句,即 returns 与该点的颜色图关联的值。有谁知道我应该使用什么 kwargs 来实现这个目标?

编辑:MWE

from mpldatacursor import datacursor
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

scatter = ax.scatter(np.random.random(100),
           np.random.random(100),
           c=np.random.random(100),
           s=0.5)

cb = plt.colorbar(scatter, label="Colour")

datacursor(scatter,
           formatter='$T=${x:.2f}$^\circ$C\n$I=${y:.2f}$\,$mA\n$\Delta F=$$\,$THz'.format,
           draggable=True)

您需要将选取点的索引转换为要显示的值。因此,散点图的颜色应该是公开的,这样 pick_eventind 可以索引它,return 可以索引选定点的值。

from mpldatacursor import datacursor
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

x = np.random.random(100)
y = np.random.random(100)
c = np.random.random(100)

scatter = ax.scatter(x, y, c=c, s=1)

cb = plt.colorbar(scatter, label="Colour")

def fmt(**dic):
    tx = '$T=${x:.2f}$^\circ$C\n$I=${y:.2f}$\,$mA\n$\Delta F=${z:.2f}$\,$THz'
    dic.update({"z" : c[dic["ind"][0]]})
    return tx.format(**dic)


datacursor(scatter, formatter=fmt, draggable=True)

plt.show()