Я пытаюсь создать пользовательскую цветовую карту, которая объединяет интерполированные и дискретизированные цветовые сегменты. Надеюсь, что такая функциональность может обеспечить LinearSegmentedColormap matplotlib. Мой тестовый пример состоял в том, чтобы создать матрицу 10x10, где строка 0 заполнена 0, строка с 1 и т. Д. Затем я пытаюсь создать цветовую карту, которая интерполируется от черного до синего, затем дискретно разрезается на красный, а затем интерполируется с красного до белого. Ожидаемый дискретный переход от синего к красному не является дискретным и вместо этого демонстрирует неожиданную интерполяцию.Неожиданная интерполяция при использовании LinearSegmentedColormap
import matplotlib.pyplot as plt
import matplotlib as m
import numpy as np
mat = np.ndarray((10,10))
for i in xrange(10):
mat[i] = i
colors = ['black', 'blue', 'red', 'white']
index = [0.0, 0.5, 0.5, 1.0]
indx_clr = zip(index, colors)
cm = m.colors.LinearSegmentedColormap.from_list('blue_red', indx_clr, 256)
plt.imshow(mat, cmap=cm)
plt.show()
Неожиданная интерполяция показана ниже, благодаря пробегу.
У меня есть 2 вопроса.
- Почему синяя область интерполирована в красный регион?
- Как создать цветную карту, которая сочетает в себе отдельные и интерполированные цветовые сегменты?