Как создать цветовой градиент в Python?

Я хочу создать новую цветовую карту, которая интерполирует между зеленым и синим (или любые другие два цвета в этом отношении). Моя цель - получить что-то вроде:

Прежде всего, я действительно не уверен, что это можно сделать с помощью линейной интерполяции синего и зеленого. Если это возможно, я не уверен, как это сделать, я нашел некоторую документацию по использованию метода matplotlib, который интерполирует указанные значения RGBВот

Настоящая проблема в том, чтобы понять, как работает «cdict2» ниже. Для примера документация гласит:

«Пример: предположим, что вы хотите, чтобы красный увеличился с 0 до 1 в нижней половине, зеленый - в средней половине, а синий - в верхней половине. Тогда вы бы использовали:»

from matplotlib import pyplot as plt
import matplotlib 
import numpy as np

plt.figure()
a=np.outer(np.arange(0,1,0.01),np.ones(10))
cdict2 = {'red':   [(0.0,  0.0, 0.0),
                   (0.5,  1.0, 1.0),
                   (1.0,  1.0, 1.0)],
         'green': [(0.0,  0.0, 0.0),
                   (0.25, 0.0, 0.0),
                   (0.75, 1.0, 1.0),
                   (1.0,  1.0, 1.0)],
         'blue':  [(0.0,  0.0, 0.0),
                   (0.5,  0.0, 0.0),
                   (1.0,  1.0, 1.0)]} 
my_cmap2 = matplotlib.colors.LinearSegmentedColormap('my_colormap2',cdict2,256)
plt.imshow(a,aspect='auto', cmap =my_cmap2)                   
plt.show()

РЕДАКТИРОВАТЬ: Теперь я понимаю, как работает интерполяция, например, это даст интерполяцию от красного к белому:

От белого к красному: спускаясь вниз по столбцам «матрицы» для каждого цвета, в первом столбце у нас есть координата x, где мы хотим, чтобы интерполяция начиналась и заканчивалась, а два других столбца - это фактические значения для значения цвета по этой координате. ,

cdict2 = {'red':   [(0.0,  1.0, 1.0),
                    (1.0,  1.0, 1.0),
                    (1.0,  1.0, 1.0)],
         'green': [(0.0,  1.0, 1.0),
                   (1.0, 0.0, 0.0),
                   (1.0,  0.0, 0.0)],
     'blue':  [(0.0,  1.0, 1.0),
               (1.0,  0.0, 0.0),
               (1.0,  0.0, 0.0)]} 

Очевидно, что нужный мне градиент будет очень сложно создать путем интерполяции в RGB-пространстве ...

Ответы на вопрос(6)

Ваш ответ на вопрос