如何合并matplotlib.集合?

qlfbtfca  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(112)

如何合并或连接matplotlib.collections?
想象一下,你有两个不同的matplotlib.collections,它们是由两个不同的scatter调用产生的,然后你想在这两个collections上使用contains来监听鼠标事件。

fig, ax = plt.subplots(1, 1, figsize=(8,6))
sc1 = ax.scatter([12,23,34],[2,6,4])
sc2 = ax.scatter([19,3,14],[3,8,1])
7fyelxc5

7fyelxc51#

我在合并多个PolyCollection时也遇到了类似的问题。我最终编写了这个函数来合并多个集合:

import itertools
from matplotlib.collections import PathCollection
import numpy.ma

def merge_poly_collections(collections):
    all_paths = itertools.chain(*(c.get_paths() for c in collections))
    all_arrays = numpy.ma.concatenate([c.get_array() for c in collections])
    result = PathCollection(list(all_paths))
    result.set_array(all_arrays)
    return result

我比较确定这也应该适用于ax.scatter返回的PathCollections。在我的函数中,我只复制了路径和数组,但它应该很容易适应复制输入集合的其他属性。

相关问题