(Я знаю, что это старый вопрос, но ...) Для цветных символов требуется matplotlib.cm.ScalarMappable
, plt.plot
создает строки, которые не являются скалярными, поэтому, чтобы сделать цветную панель, нам нужно будет сделать скалярное отображение.
Хорошо. Таким образом, конструктор ScalarMappable
принимает экземпляр cmap
и norm
. (данные шкалы нормали до диапазона 0-1, cmaps, с которыми вы уже работали, и принимаете число между 0-1 и возвращает цвет). Итак, в вашем случае:
import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.normalize(min=0, max=1))
plt.colorbar(sm)
Поскольку ваши данные уже находятся в диапазоне 0-1, вы можете упростить создание sm
, чтобы:
sm = plt.cm.ScalarMappable(cmap=my_cmap)
Надеяться, что помогает кто-то.
EDIT: для matplotlib v1.2 или выше код становится:
import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
plt.colorbar(sm)
EDIT: для matplotlib v1.3 или выше код становится:
import matplotlib.pyplot as plt
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.Normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
plt.colorbar(sm)