为了使PatchCollection 的各个补丁具有不同的颜色,您有两种选择。
- 使用原始补丁的颜色。
- 使用颜色图根据某些值数组确定颜色。
使用原始补丁的颜色。
这种方法最接近问题中的代码。它需要将参数match_original=True 设置为补丁集合。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.patches
import matplotlib.collections
ar = np.array([[0,0],[1,0],[1,1],[0,1],[0,0]])
cmap=plt.cm.jet
patches=[]
fig, ax=plt.subplots()
for i in range(5):
x = np.random.rand(1)[0]
c = cmap(x)[:3]
poly = plt.Polygon(ar+i, color=c, closed=True)
patches.append(poly)
collection = matplotlib.collections.PatchCollection(patches,match_original=True)
ax.add_collection(collection)
ax.autoscale()
plt.show()
使用颜色图根据一些值数组确定颜色。
这可能更容易实现。您可以为PatchCollection 设置一个值数组,并指定一个颜色图,根据该颜色图对多边形进行着色,而不是为每个单独的多边形指定颜色。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.patches
import matplotlib.collections
ar = np.array([[0,0],[1,0],[1,1],[0,1],[0,0]])
values = np.random.rand(5)
cmap=plt.cm.jet
patches=[]
fig, ax=plt.subplots()
for i in range(len(values)):
poly = plt.Polygon(ar+i, closed=True)
patches.append(poly)
collection = matplotlib.collections.PatchCollection(patches, cmap=cmap)
collection.set_array(values)
ax.add_collection(collection)
ax.autoscale()
plt.show()