matplotlib 自定义任意两种颜色的插值

什么是插值

对颜色插值,实际上就是求两种颜色的线性(凸)组合
i n t e r p o l a t e C o l o r = c o l o r A ( 1 α ) + c o l o r B α interpolateColor = colorA*(1-\alpha) + colorB*\alpha

α \alpha 从 0 到 1 过渡时,颜色从 colorA 过渡到 colorB.

def interpolateColor(colorA, colorB, alpha):
    return tuple(np.array(colorA)*(1-alpha) + np.array(colorB)*(alpha))

颜色渐变

测试一下,从红色到白色的渐变:

red = (1,0,0)
white = (1,1,1)
for alpha in np.linspace(0,1,10):
    print(interpolateColor(red, white, alpha))
'''
(1.0, 0.0, 0.0)
(1.0, 0.1111111111111111, 0.1111111111111111)
(1.0, 0.2222222222222222, 0.2222222222222222)
(1.0, 0.3333333333333333, 0.3333333333333333)
(1.0, 0.4444444444444444, 0.4444444444444444)
(1.0, 0.5555555555555556, 0.5555555555555556)
(1.0, 0.6666666666666666, 0.6666666666666666)
(1.0, 0.7777777777777777, 0.7777777777777777)
(1.0, 0.8888888888888888, 0.8888888888888888)
(1.0, 1.0, 1.0)
'''

用于动态过程的可视化

下面来用这种插值方法来画图

red = (1,0,0)
pink = (1,0.9,0.9)
for i in range(200):
    plt.plot(record[i], color=interpolateColor(pink, red, i/200))

在这里插入图片描述
通过颜色渐变来描述曲线的演化过程,是不是一目了然啦~

原创文章 338 获赞 621 访问量 50万+

猜你喜欢

转载自blog.csdn.net/itnerd/article/details/105758589