У меня есть растровый график с различными размерами растра, поэтому я использую патчи matplotlib для их добавления. Раньше я зацикливался, добавляя по одному патчу за раз, что работает, но медленно. Я попытался изменить код, чтобы добавить все исправления сразу, используя коллекцию исправлений. Это примерно в 4 раза быстрее (меньше, чем я надеялся), но проблема в том, что все патчи одного цвета. Может ли кто-нибудь указать, что неверно в моем итераторе в моем воспроизводимом примере, пожалуйста?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.colorbar as cbar
import matplotlib.collections as collections
fig,(ax)=plt.subplots(2)
cmap=plt.cm.seismic
n=50
np.random.seed(seed=100)
px=np.random.uniform(size=n)
py=np.random.uniform(size=n)
cidx=np.random.uniform(size=n)
normal=plt.Normalize(0,1)
cols=cmap(cidx)
# slow way:
for i in range(n):
p=patches.Rectangle((px[i],py[i]),0.1,0.1,
facecolor=cols[i])
ax[0].add_patch(p)
# fast way, but colors are all identical
plist=[patches.Rectangle((px[i],py[i]),0.1,0.1,facecolor=cols[i]) for i in range(n)]
collection=collections.PatchCollection(plist)
ax[1].add_collection(collection)
plt.show()
collection=collections.PatchCollection(plist, match_original=True)
- person tmdavison   schedule 17.10.2019