matplotlib 如何在通过拾取事件选择的散点图中的两点之间绘制线

9gm1akwq  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(145)

这是一个matplotlib和pick_event问题。我们尝试从散点图中设置两个点的第一次和第二次选择。但是我们还没有找到如何通过pick_event执行此操作。我们还希望在散点图中的点之间创建多条线。感谢您的帮助!
我们希望能找到解决这个问题的程序的一部分。

xdnvmnnf

xdnvmnnf1#

下面是一个简单的脚本,当你点击散点图的两个点时,它会创建一条线。这就是你要找的吗?

import matplotlib.pyplot as plt
from matplotlib.collections import PathCollection
import numpy as np
from matplotlib.backend_bases import PickEvent
from numpy.random import rand
from matplotlib import axes

# Fixing random state for reproducibility
np.random.seed(19680801)

fig, ax = plt.subplots(1, 1)
x = rand(100)
y = rand(100)
ax.scatter(x, y, picker=True)

buffer = []
line_params = dict(color='black')

def onpick(event: PickEvent, buffer: list, ax: axes, line_params: dict):
    if isinstance(event.artist, PathCollection):
        i = event.ind
        buffer.append((x[i][0], y[i][0]))
    if len(buffer) == 2:
        print(f"Creating line with points {buffer}")
        array = np.array(buffer)
        ax.plot(array[:, 0], array[:, 1], **line_params)
        plt.draw()
        buffer.clear()

fig.canvas.mpl_connect('pick_event', lambda event: onpick(event, buffer, ax, line_params))
plt.show(block=True)

相关问题