我目前有很多其他语言使用的色彩图,我想将其导入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代码。