在 Matplotlib 热图上:
import matplotlib.pyplot as plt
import numpy as np
plt.imshow(np.random.random((16, 16)), cmap='jet', interpolation='nearest')
plt.show()
是否有内置的 Matplotlib 功能可以通过拖放进行“矩形选择”?
例如添加一个允许绘制选择矩形的工具栏按钮?
注意:我正在寻找一种在同一个热图上进行多个选择的解决方案。
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()