指定和测量颜色之间的差异,Matplotlib颜色映射

2024-10-03 06:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

复制matplotlib中使用的旧颜色映射时遇到问题。似乎它是默认的colormap,因为在原始代码中,没有指定colormap。你知道吗

所以看我做的旧图,我用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测量输出颜色时,它们有不同的十六进制值(我可以看出它们是不同的)。你知道吗

是什么原因造成的?你知道吗

我正试图复制的原稿和自定义颜色图的输出链接如下:

original

replicate


Tags: 代码frommatplotlib颜色pltbluelistcolormap
1条回答
网友
1楼 · 发布于 2024-10-03 06:27:05

您可以使用以下方法更接近所需的结果。 逻辑是colorbar中的每种颜色都是与其间隔平均值相对应的值。你知道吗

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()

enter image description here

另一个选项是使用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()

enter image description here

相关问题 更多 >