Вы можете создать Matplotlib collection
, а затем передать массив/список цветов для использования в графике.
Рассмотрим следующий пример. Сначала сделайте несколько манекенов.
import matplotlib.path as mpath
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
def get_tri(xoff=0, yoff=0, up=1):
verts = [(0.0 + xoff, 0.0 + yoff),
(0.5 + xoff, 1.0 * up + yoff),
(1.0 + xoff, 0.0 + yoff),
(0.0 + xoff, 0.0 + yoff)]
p = mpath.Path(verts, [mpath.Path.MOVETO] + (len(verts)-1)*[mpath.Path.LINETO])
return p
shapes = [get_tri(xoff=x, yoff=y, up=o) for x,y,o in [(0.0, 0, 1),
(1.0, 0, 1),
(0.5, 1, 1),
(0.5, 1, -1)]]
Получить цвета из палитры:
cmap = plt.cm.RdYlBu_r
colors = cmap(np.linspace(0,1, len(shapes)))
И постройте фигуры:
fig, ax = plt.subplots(subplot_kw={'aspect': 1.0})
coll = mpl.collections.PathCollection(shapes, facecolor=colors, linewidth=3)
ax.add_collection(coll)
ax.autoscale_view()
Обратите внимание: поскольку я использую Paths
для своих фигур, я также использую PathCollection
. Если вы используете Polygons
(или что-то еще), вы также должны использовать соответствующий тип коллекции, например PolyCollection
.
Таким образом, рисовать разные цвета очень просто, сложная часть, вероятно, состоит в том, чтобы получить пути / многоугольники. Если они у вас уже есть, вы можете поместить их в список для создания коллекции.

15.12.2014