Это то, для чего можно использовать Collection
.Вы можете создать Polygon
один раз и передать его PatchCollection
.Затем определите все точки, где разместить этот многоугольник, как offsets
.
import matplotlib.pyplot as plt
import matplotlib.collections as mcol
import matplotlib.transforms as mtrans
import numpy as np
poly = plt.Polygon(((1,0),(0,0),(1,1),(2,1)), fc = 'b', closed = True)
x,y = np.meshgrid(np.arange(15), np.arange(10))
# create PatchCollection with all coordinates within x=(0..14), y=(0..9) as offsets
pcol = mcol.PatchCollection([poly,], offsets=np.c_[x.flatten(), y.flatten()],
offset_position="data", transOffset=mtrans.IdentityTransform(),
transform=plt.gca().transData)
# colorize the patches
pcol.set_array(np.random.rand(15*10))
plt.gca().add_collection(pcol)
plt.gca().set(xlim=(0,16),ylim=(0,10))
plt.show()
