在matplotlib中自定义连续颜色映射

Dan*_*vaw 3 python matplotlib colormap

我已经阅读了有关此主题的一些问题,但我无法找到我的问题的具体答案.

让我们考虑下面的图片:

彩色地图示例

我的目标只是改变地图的极限颜色,例如在这种情况下,颜色图从深红色变为深蓝色,假设我希望它从深绿色变为深蓝色.具体来说,我会以与上例相同的连续方式从颜色#244162#DCE6F1(蓝色的色调).

怎么可能这样做?


[编辑]

我试过以下代码:

import matplotlib.pyplot as plt
import matplotlib.colors as clr

some_matrix = ...
cmap = clr.LinearSegmentedColormap('custom blue', ['#244162','#DCE6F1'], N=256)
plt.matshow(some_matrix, cmap=cmap)
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误消息TypeError: list indices must be integers, not unicode.

tmd*_*son 7

LinearSegmentedColormap 不采用颜色列表,它采用以下参数:

带有红色,绿色和蓝色条目的字典.每个条目应该是x,y0,y1元组的列表,在表中形成行.alpha的条目是可选的.

所以,你需要像上面那样定义一个字典,或者在你的情况下,我想你只想使用这个LinearSegmentedColormap.from_list()方法:

import matplotlib.pyplot as plt
import matplotlib.colors as clr
import numpy as np

some_matrix = np.random.rand(10,10)

cmap = clr.LinearSegmentedColormap.from_list('custom blue', ['#244162','#DCE6F1'], N=256)

plt.matshow(some_matrix, cmap=cmap)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述