在matplotlib中永久注册颜色图

Vor*_*ity 3 python matplotlib

我目前有很多其他语言使用的色彩图,我想将其导入python以在matplotlib中使用。我能够将三列ascii文件转换为RGB数组,然后转换为如下的色图:

def from_ascii(filename, name):
    palette = open(filename)
    lines = palette.readlines()
    carray = np.zeros([len(lines), 3])
    for num, line in enumerate(lines):
        carray[num, :] = [float(val) for val in line.strip().split()]
    cmap = colors.ListedColormap(carray, name=name)
Run Code Online (Sandbox Code Playgroud)

然后,我可以注册该颜色图:

cm.register_cmap(name=name, cmap=cmap)
Run Code Online (Sandbox Code Playgroud)

以便:

In [4]: cm.get_cmap('my_cmap')
Out[4]: <matplotlib.colors.ListedColormap instance at 0x1b114c68>
Run Code Online (Sandbox Code Playgroud)

问题是,cm.get_cmap()如果我在同一程序中,则只能检索我的自定义颜色图。一旦我尝试从单独的脚本中调用自定义颜色图,就cm.get_cmap()返回None。

我敢肯定我误会了...

小智 5

为了使颜色图在会话之间存在,您必须将代码保存在文件中,并在每次需要时将其导入。您可以通过主目录中的.pythonrc自动为交互式会话执行此操作。对于脚本,您需要使其明确,或编辑matplotlib代码。