2017-09-19 182 views
1

我有一个散点图,其中每个绘图点与另一个值相关联的颜色缩放。这是一个懒惰的解决方法,可以在不需要调整数据点的情况下制作“多图”样式图像。为了让我使用mpldatacursor产生对剧情交互注释分析更容易,我有这显示坐标就好了自定义格式:mpldatacursor散点图点的颜色信息

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

但我真正想要的是对于三线,$\Delta F=$$\,$THz ,包含一个语句,该语句返回与该点处的颜色映射关联的值。有谁知道我应该用什么样的克瓦格来实现这个目标?

编辑: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) 
+0

*是什么*了 “与在该点的彩色地图关联值”?像往常一样,通过提供[mcve]的明确问题描述,您可以大幅提升获得帮助的机会。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest正如我所说的,“我有一个带有颜色缩放的散点图,每个绘图点都与另一个值相关联。” 换句话说,我为这个图使用3x1D数组。两个用于坐标,另一个用于为每个点分配一个值。我希望在我的数据光标格式化程序中显示colourmap数组的值。 –

回答

1

你需要拾取点的指数转换为值显示。因此,散点图的颜色应该是公开的,例如pick_eventind可以对它进行索引并返回所选点的值。

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() 

enter image description here

+0

谢谢,我需要的缺少步骤是使用“ind”参数来更新字典。 –