3

PatchCollectionesのリストを受け入れ、Patch一度にそれらを変換/キャンバスに追加できるようにします。ただし、オブジェクトPatchの構築後の esの変更は反映されません。PatchCollection

例えば:

import matplotlib.pyplot as plt
import matplotlib as mpl

rect = mpl.patches.Rectangle((0,0),1,1)

rect.set_xy((1,1))
collection = mpl.collections.PatchCollection([rect])
rect.set_xy((2,2))

ax = plt.figure(None).gca()
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.add_artist(collection)
plt.show()  #shows a rectangle at (1,1), not (2,2)

パッチをまとめて変換できるようにパッチをグループ化する matplotlib コレクションを探していますが、個々のパッチも変更できるようにしたいと考えています。

4

1 に答える 1

3

私はあなたが望むことをするコレクションを知りませんが、あなた自身のためにそれをかなり簡単に書くことができます:

import matplotlib.collections as mcollections

import matplotlib.pyplot as plt
import matplotlib as mpl


class UpdatablePatchCollection(mcollections.PatchCollection):
    def __init__(self, patches, *args, **kwargs):
        self.patches = patches
        mcollections.PatchCollection.__init__(self, patches, *args, **kwargs)

    def get_paths(self):
        self.set_paths(self.patches)
        return self._paths


rect = mpl.patches.Rectangle((0,0),1,1)

rect.set_xy((1,1))
collection = UpdatablePatchCollection([rect])
rect.set_xy((2,2))

ax = plt.figure(None).gca()
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.add_artist(collection)
plt.show()  # now shows a rectangle at (2,2)
于 2012-06-14T21:12:23.727 に答える