matplotlib python 中 colorbar 的 onclick 方法

3 投票
1 回答
974 浏览
提问于 2025-04-17 16:05

我有一个颜色条和一个图表。我想知道是否可以在颜色条上使用点击事件,这样点击颜色条上的某个颜色部分时,图表上就会发生一些事情。也就是说,点击颜色条的某个颜色区域后,会触发某个动作。我知道我想要的动作该怎么做,只是想知道怎么设置颜色条,让它可以响应点击事件。

1 个回答

6

当然可以!你只需要做类似于 cbar.ax.set_picker(tolerance) 这样的操作。

简单来说,这个代码会让你在点击颜色条上的某个值时,周围接近这个值的地方会被高亮显示:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.random((10,10))

fig, ax = plt.subplots()
im = ax.imshow(data)
cbar = fig.colorbar(im)
ax.set_title('Click on the colorbar')

highlight = ax.imshow(np.ma.masked_all_like(data), interpolation='nearest', 
                      vmin=data.min(), vmax=data.max())

def on_pick(event):
    val = event.mouseevent.ydata
    selection = np.ma.masked_outside(data, val - 0.05, val + 0.05)
    highlight.set_data(selection)
    fig.canvas.draw()

cbar.ax.set_picker(5)
fig.canvas.mpl_connect('pick_event', on_pick)

plt.show()

enter image description here

撰写回答