matplotlib 中的自定义连续颜色图
Custom continuous color map in matplotlib
我已经阅读了一些关于这个主题的问题,但我一直无法找到我的问题的具体答案。
考虑下图:
我的目标只是更改地图的限制颜色,例如在这种情况下,颜色图从深红色变为深蓝色,假设我希望它从深绿色变为深蓝色。具体来说,我希望它以与上例相同的连续方式从颜色 #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
。
LinearSegmentedColormap
不采用颜色列表,它采用以下参数:
a dictionary with a red, green and blue entries. Each entry should be a list of x, y0, y1 tuples, forming rows in a table. Entries for alpha are optional.
所以,你要么需要像上面那样定义一个字典,要么在你的情况下,我认为你只想使用 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()
我已经阅读了一些关于这个主题的问题,但我一直无法找到我的问题的具体答案。
考虑下图:
我的目标只是更改地图的限制颜色,例如在这种情况下,颜色图从深红色变为深蓝色,假设我希望它从深绿色变为深蓝色。具体来说,我希望它以与上例相同的连续方式从颜色 #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
。
LinearSegmentedColormap
不采用颜色列表,它采用以下参数:
a dictionary with a red, green and blue entries. Each entry should be a list of x, y0, y1 tuples, forming rows in a table. Entries for alpha are optional.
所以,你要么需要像上面那样定义一个字典,要么在你的情况下,我认为你只想使用 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()