在 Matplotlib 热图/imshow 上进行多个拖放矩形选择

问题描述 投票:0回答:1

在 Matplotlib 热图上:

import matplotlib.pyplot as plt
import numpy as np
plt.imshow(np.random.random((16, 16)), cmap='jet', interpolation='nearest')
plt.show()

是否有内置的 Matplotlib 功能可以通过拖放进行“矩形选择”?

例如添加一个允许绘制选择矩形的工具栏按钮?

注意:我正在寻找一种在同一个热图上进行多个选择的解决方案。

python matplotlib visualization heatmap
1个回答
0
投票

Matplotlib 没有内置支持热图上交互式区域选择。但是,您可以使用

RectangleSelector
模块中的
matplotlib.widgets
来实现此功能。我已经在导入的同时进行了所需的更改,希望它有所帮助。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import RectangleSelector

# Generate random data for the heatmap
data = np.random.random((16, 16))

# Function to be called when a rectangle is selected
def on_rectangle_select(eclick, erelease):
    # Extract the coordinates of the rectangle
    x1, y1 = int(eclick.xdata), int(eclick.ydata)
    x2, y2 = int(erelease.xdata), int(erelease.ydata)
    
    # Highlight the selected region
    plt.gca().add_patch(plt.Rectangle((x1, y1), x2 - x1, y2 - y1, fill=None, edgecolor='red', linewidth=2))
    plt.draw()

# Plot the heatmap
plt.imshow(data, cmap='jet', interpolation='nearest')

# Create a RectangleSelector instance
rs = RectangleSelector(plt.gca(), on_rectangle_select, drawtype='box', useblit=True, button=[1], minspanx=5, minspany=5, spancoords='pixels')

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.