Matplotlib中的自定义连续颜色映射

7

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

考虑下面的图像:

Color map example

我的目标只是更改地图的限制颜色,例如在这种情况下,颜色映射从深红色到深蓝色,假设我希望它从深绿色到深蓝色。 具体来说,我希望它从颜色#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)

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

1
除了“阅读一些问题”之外,你尝试过其他的吗?例如,你是否寻找过适用的现有颜色映射或尝试使用LinearSegmentedColormap - tom10
这里有一些 matplotlib 文档中的具体示例。http://matplotlib.org/examples/color/colormaps_reference.html - Kapil Sharma
我尝试了一些现有的颜色映射,但我想定义一个自定义的颜色映射,以保持整个文档的统一格式。我尝试使用以下代码实现LinearSegmentedColormapcmap = matplotlib.colors.LinearSegmentedColormap('custom blue', ['#244162','#DCE6F1'], N=256),但它没有起作用。 - Daneel Olivaw
1
@DaneelOlivaw,请将该信息放在问题本身中,并准确描述“it hasn't worked”的含义。CM没有生成吗?颜色不是你想要的吗?发生了什么事? - MattDMo
1个回答

17

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

输入图像描述


哦,太棒了!这正是我想要的,我漏掉了 .from_list,谢谢你! - Daneel Olivaw
到目前为止,我发现创建渐变cmaps最快的方法是; 感谢分享! - bigZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接