我正在使用 mpld3 绘制一系列散点图。
我已成功使用 PointLabelTooltip。但我也想使用 LinkedBrush 功能突出具有相同特征的点。
例如,我绘制了 20 个细菌中 70 个基因的测序深度的散点图。如果我将鼠标悬停在一个点上,它会告诉我它指的是哪个基因。但我也希望它突出代表其他细菌中相同基因的点。
#Make an array of 20 bacteria each with 70 genes
a = np.random.randint(500, size=(20, 70))
bacteria = ["b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20"]
genes = ["g1", "g2", "g3", "g4", "g5", "g6", "g7", "g8", "g9", "g10", "g11", "g12", "g13", "g14", "g15", "g16", "g17", "g18", "g19", "g20", "g21", "g22", "g23", "g24", "g25", "g26", "g27", "g28", "g29", "g30", "g31", "g32", "g33", "g34", "g35", "g36", "g37", "g38", "g39", "g40", "g41", "g42", "g43", "g44", "g45", "g46", "g47", "g48", "g49", "g50", "g51", "g52", "g53", "g54", "g55", "g56", "g57", "g58", "g59", "g60", "g61", "g62", "g63", "g64", "g65", "g66", "g67", "g68", "g69", "g70"]
fig, ax = plt.subplots(1, a.shape[0], sharey="row", figsize=(10, 3.5))
labels = []
for i in range(a.shape[0]):
xlist = np.random.normal(1, 0.1, len(a[i,:]))
points = ax[i].scatter(xlist, a[i,:])
ax[i].set_ylim(0,500)
ax[i].xaxis.set_major_locator(pylab.NullLocator())
ax[i].set_xlabel(bacteria[i])
labels.append(genes[i])
tooltip = plugins.PointLabelTooltip(points, labels=labels)
plugins.connect(fig, tooltip)
mpld3.display()
我想修改linkedBrush插件以突出显示不同细菌中相同基因的点:
plugins.connect(fig, plugins.LinkedBrush(points))
我查看了源代码(https://mpld3.github.io/_modules/mpld3/plugins.html),但这似乎在 LinkedBrush 模块中没有包含足够的信息来修改。
任何关于我如何实现这一点的建议将不胜感激。
谢谢