检索 Matplotlib 热图颜色
Retrieving Matplotlib Heatmap Colors
我正在尝试检索由 imshow()
函数生成的 matplotlib 热图上每个单元格的颜色,例如由下面的 magic_function
执行的:
import matplotlib.pyplot as plt
import numpy as np
hm = plt.imshow(np.random.rand(10, 10))
color_matrix = hm.magic_function() #returns matrix containing the RGB/Hex values of each cell
在 , you need to understand the default color map chosen by matplotlib
since you didn't provide one. The documentation 的基础上声明它是 plt.rcParams["image.cmap"]
的值,因此我们使用它。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
from matplotlib.colors import Normalize
data = np.random.rand(10, 10)
cmap = cm.get_cmap(plt.rcParams["image.cmap"])
hm = plt.imshow(data)
norm = Normalize(vmin=data.min(), vmax=data.max())
rgba_values = cmap(norm(data))
左上角单元格的 RGBA 值将是 rgba_values[0,0]
您正在查找通过 imshow
创建的图像所使用的颜色图。现在,您当然可以像其他答案所建议的那样,首先对颜色图如何进入图像进行逆向工程。这看起来很麻烦,而且通常甚至是不可能的。
因此给定一个 AxesImage
(imshow
返回的对象)或任何其他 ScalarMappable
,您可以通过 .cmap
获得正在使用的颜色图。由于数据值被标准化为 0..1 之间的范围,因此您需要从 .norm
属性中获得的标准化。最后,您需要从 .get_array()
方法获得的数据。
因此 magic_function
是三个函数的链。
im = plt.imshow(np.random.rand(10, 10))
color_matrix = im.cmap(im.norm(im.get_array()))
color_matrix
现在是图像中像素对应的(10,10,4)形RGBA颜色数组。
我正在尝试检索由 imshow()
函数生成的 matplotlib 热图上每个单元格的颜色,例如由下面的 magic_function
执行的:
import matplotlib.pyplot as plt
import numpy as np
hm = plt.imshow(np.random.rand(10, 10))
color_matrix = hm.magic_function() #returns matrix containing the RGB/Hex values of each cell
在 matplotlib
since you didn't provide one. The documentation 的基础上声明它是 plt.rcParams["image.cmap"]
的值,因此我们使用它。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
from matplotlib.colors import Normalize
data = np.random.rand(10, 10)
cmap = cm.get_cmap(plt.rcParams["image.cmap"])
hm = plt.imshow(data)
norm = Normalize(vmin=data.min(), vmax=data.max())
rgba_values = cmap(norm(data))
左上角单元格的 RGBA 值将是 rgba_values[0,0]
您正在查找通过 imshow
创建的图像所使用的颜色图。现在,您当然可以像其他答案所建议的那样,首先对颜色图如何进入图像进行逆向工程。这看起来很麻烦,而且通常甚至是不可能的。
因此给定一个 AxesImage
(imshow
返回的对象)或任何其他 ScalarMappable
,您可以通过 .cmap
获得正在使用的颜色图。由于数据值被标准化为 0..1 之间的范围,因此您需要从 .norm
属性中获得的标准化。最后,您需要从 .get_array()
方法获得的数据。
因此 magic_function
是三个函数的链。
im = plt.imshow(np.random.rand(10, 10))
color_matrix = im.cmap(im.norm(im.get_array()))
color_matrix
现在是图像中像素对应的(10,10,4)形RGBA颜色数组。