指定颜色和测量颜色之间的差异,matplotlib颜色映射
问题描述:
我无法复制我在matplotlib中使用的旧颜色映射。它好像是默认的颜色映射,因为在原始代码中没有指定颜色映射。指定颜色和测量颜色之间的差异,matplotlib颜色映射
因此,看着我制作的旧图,我使用gpick
测量了colorbar
的颜色。我已经输入到这些自定义颜色表如下:
blue_red1 = LinearSegmentedColormap.from_list('mycmap', [
(0, '#6666de'),
(0.1428, '#668cff'),
(0.2856, '#66d9ff'),
(0.4284, '#92ffce'),
(0.5712, '#d0ff90'),
(0.714, '#ffe366'),
(0.8568, '#ff9b66'),
(1, '#db6666')])
CS = plt.contourf(H, temps, diff_list, cmap=blue_red1)
plt.savefig('out.png')
然而,当我测量输出颜色与gpick
再次它们具有不同的十六进制值(和我可以告诉他们是不同的)。
这可能是什么原因造成的?
原来我试图复制,并从自定义颜色映射输出链接如下:
答
你可能会得到更接近使用期望的结果以下。 逻辑是颜色条中的每种颜色都是与其间隔的平均值相对应的值。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
X,Y=np.meshgrid(np.linspace(0,1),np.linspace(0,1))
Z = X+Y
blue_red1 = LinearSegmentedColormap.from_list('mycmap', [
(0.0000, '#6666de'),
(0.0625, '#6666de'),
(0.1875, '#668cff'),
(0.3125, '#66d9ff'),
(0.4375, '#92ffce'),
(0.5625, '#d0ff90'),
(0.6875, '#ffe366'),
(0.8125, '#ff9b66'),
(0.9375, '#db6666'),
(1.0000, '#db6666')])
CS = plt.contourf(X,Y,Z, cmap=blue_red1)
plt.colorbar()
plt.show()
另一种选择是使用ListedColormap
。这给出了准确的颜色。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
X,Y=np.meshgrid(np.linspace(0,1),np.linspace(0,1))
Z = X+Y
blue_red1 = ListedColormap(['#6666de','#668cff','#66d9ff','#92ffce','#d0ff90',
'#ffe366','#ff9b66','#db6666'],'mycmap')
CS = plt.contourf(X,Y,Z, cmap=blue_red1)
plt.colorbar()
plt.show()