我想创建一个在绿色和蓝色(或其他任何两种颜色之间)之间插入的新色彩映射。我的目标是得到这样的东西:如何在Python中创建颜色渐变?
首先,我真的不知道这是否可以使用蓝色和绿色的线性插值完成。如果可以的话,我不知道该怎么做,我发现了一些使用matplotlib方法插入指定的RGB值的文档。here
真正的麻烦在于了解“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坐标,另外两列是颜色val的实际值在那个坐标上。
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空间插值创造... ...
[查看此链接](http://matplotlib.org/examples/color/named_colors.html)有关指定的颜色。那里的代码显示了规范方法之间的转换。 [我也认为这个链接](http://matplotlib.org/examples/api/colorbar_only.html)关于颜色条可能会有所帮助。 – mauve 2014-09-04 15:15:33
您是如何创建该示例渐变的?这远非线性。 – 2014-09-04 18:04:25
是的,它只是一个屏幕截图,说明我想要什么。我没有创建它。我想知道如果Python有一些功能,这些功能,以促进这些类型的梯度...... – Jack 2014-09-04 18:10:15