У меня есть следующий код:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
Таким образом, получается график значений 'v' на осях X против Y, используя указанную цветовую карту. Оси X и Y идеальны, но цветовая карта распространяется между минимальным и максимальным значениями v. Я бы хотел, чтобы цветовая карта находилась в диапазоне от 0 до 1.
Я думал об использовании:
plt.axis(...)
Чтобы установить диапазоны осей, но для этого нужны аргументы только для минимального и максимального значений X и Y, а не для цветовой карты.
Редактировать:
Для ясности, скажем, у меня есть один график, значения которого находятся в диапазоне (0 ... 0,3), и другой график, значения которого (0,2 ... 0,8).
На обоих графиках я хочу, чтобы диапазон цветовой шкалы был (0 ... 1). На обоих графиках я хочу, чтобы этот диапазон цветов был идентичным с использованием полного диапазона Cdict выше (поэтому 0,25 на обоих графиках будет одного цвета). На первом графике все цвета от 0,3 до 1,0 не будут отображаться на графике, но будут отображаться на клавише с цветовой шкалой сбоку. В другом случае все цвета от 0 до 0,2, а также от 0,8 до 1 не будут отображаться на графике, но будут отображаться на цветовой шкале сбоку.
Используйте функцию CLIM (эквивалентную функции CAXIS в MATLAB):
источник
Не уверен, что это самое элегантное решение (это то, что я использовал), но вы можете масштабировать ваши данные в диапазоне от 0 до 1, а затем изменить цветовую шкалу:
С двумя различными ограничениями вы можете контролировать диапазон и легенду цветовой панели. В этом примере на панели отображается только диапазон от -0,5 до 1,5, а цветовая карта охватывает значения от -2 до 2 (так что это может быть диапазон данных, который вы записываете до масштабирования).
Поэтому вместо масштабирования карты цветов вы масштабируете свои данные и подстраиваете их под цветовую панель.
источник
Использование среды рисунка и .set_clim ()
Может быть проще и безопаснее эта альтернатива, если у вас есть несколько участков:
Единый цветовой бар
Лучшая альтернатива - использовать одну цветную полосу для всего графика. Есть разные способы сделать это, это руководство очень полезно для понимания лучшего варианта. Я предпочитаю это решение, которое вы можете просто скопировать и вставить вместо предыдущей части кода для визуализации цветовой панели .
PS
Я бы предложил использовать
pcolormesh
вместо,pcolor
потому что это быстрее (больше информации здесь ).источник