настройка цветового диапазона в коллекции matplotlib patchcollection
я прокладываю PatchCollection
в matplotlib с координатами и значениями цвета патча, считанными из файла.
проблема в том, что matplotlib, похоже, автоматически масштабирует цветовой диапазон до min/max значений данных. Как я могу вручную установить цветовой диапазон? Е. Г. если мой диапазон данных составляет 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()
1 ответов
использовать p.set_clim([5, 50])
чтобы установить минимумы и максимумы масштабирования цвета в случае вашего примера. Все, что в matplotlib имеет цветовую карту, имеет 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(...)
, мы получаем это: