настройка цветового диапазона в matplotlib patchcollection

Я PatchCollection в matplotlib с коордами и значениями цвета патча, считанные из файла.

Проблема в том, что matplotlib, кажется, автоматически масштабирует диапазон цветов до минимального / максимального значений данных. Как я могу вручную установить диапазон цветов? Например, если мой диапазон данных составляет 10-30, но я хочу масштабировать его до цветового диапазона 5-50 (например, для сравнения с другим сюжетом), как я могу это сделать?

Мои команды построения выглядят так же, как в примере кода api: patch_collection.py

 colors = 100 * pylab.rand(len(patches)) p = PatchCollection(patches, cmap=matplotlib.cm.jet, alpha=0.4) p.set_array(pylab.array(colors)) ax.add_collection(p) pylab.colorbar(p) pylab.show() 

    Используйте p.set_clim([5, 50]) чтобы установить минимальные и максимальные значения масштабирования в случае вашего примера. Все, что есть в matplotlib, имеющем colormap, имеет методы get_clim и set_clim .

    В качестве полного примера:

     import matplotlib import matplotlib.pyplot as plt from matplotlib.collections import PatchCollection from matplotlib.patches import Circle import numpy as np # (modified from one of the matplotlib gallery examples) resolution = 50 # the number of vertices N = 100 x = np.random.random(N) y = np.random.random(N) radii = 0.1*np.random.random(N) patches = [] for x1,y1,r in zip(x, y, radii): circle = Circle((x1,y1), r) patches.append(circle) fig = plt.figure() ax = fig.add_subplot(111) colors = 100*np.random.random(N) p = PatchCollection(patches, cmap=matplotlib.cm.jet, alpha=0.4) p.set_array(colors) ax.add_collection(p) plt.colorbar(p) plt.show() 

    введите описание изображения здесь

    Теперь, если мы просто добавим p.set_clim([5, 50]) (где p – коллекция патчей) где-нибудь, прежде чем мы назовем plt.show(...) , получим следующее: введите описание изображения здесь