Я хочу изменить свою пользовательскую цветовую карту, которая выглядит следующим образом
import matplotlib.cm as cm
import matplotlib as mpl
cm.register_cmap(name='owb',
data = {'red': ((0.0, 1.0, 1.0), # orange
(0.5, 1.0, 1.0), #
(1.0, 0.0, 0.0)), # blue
'green': ((0.0, 0.6, 0.6), # orange
(0.5, 1.0, 1.0), #
(1.0, 0.0, 0.0)), # blue
'blue': ((0.0, 0.0, 0.0), # orange
(0.5, 1.0, 1.0), #
(1.0, 1.0, 1.0)) # blue
})
Теперь, так как я довольно долго искал решение этой проблемы, и при этом натолкнулся на эту тему:
карта цветов перевернутая
Я пытался использовать .reversed()
здесь:
data = {'red': ((0.0, 1.0, 1.0), # orange
(0.5, 1.0, 1.0), #
(1.0, 0.0, 0.0)), # blue
'green': ((0.0, 0.6, 0.6), # orange
(0.5, 1.0, 1.0), #
(1.0, 0.0, 0.0)), # blue
'blue': ((0.0, 0.0, 0.0), # orange
(0.5, 1.0, 1.0), #
(1.0, 1.0, 1.0)) # blue
}
owb = mpl.colors.ListedColormap('OrWhBlu', data)
owb_reversed = owb.reversed()
Здесь я получил следующую ошибку:
TypeError: unsupported operand type(s) for +: 'dict' and 'str'
но мне просто не удалось заставить его работать.
Пожалуйста, дайте мне знать, что я делаю неправильно.
Приветствия
РЕДАКТИРОВАТЬ: я попробовалрешение Kostas, и так как я должен использовать colormap_r в другой функции, где требуется имя cmap, я попытался решить это следующим образом:
cmap_r = cm.register_cmap(name="owb_r", cmap=owb_r)
функция, где она вызывается:
plt.pcolormesh(xx, yy, -Z, cmap="owb_r")
plt.scatter(X_2d[:, 0], X_2d[:, 1], c=y_2d, cmap="owb_r",
edgecolors='k')
теперь я получаю следующее сообщение об ошибке: ValueError: Invalid RGBA argument: 'u'