gpt4 book ai didi

python - 使用 LinearSegmentedColormap 时出现意外插值

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:39 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义颜色图,它结合了插值和离散化的颜色段。我希望 matplotlib 的 LinearSegmentedColormap可以提供这样的功能。我的测试用例是创建一个 10x10 矩阵,其中第 0 行填充 0,行填充 1,等等。然后我尝试创建一个颜色图,从黑色插值到蓝色,然后离散地切割成红色,然后从红色插值变白。预期的从蓝色到红色的离散过渡不是离散的,而是展示了意想不到的插值。

import matplotlib.pyplot as plt
import matplotlib as m
import numpy as np

mat = np.ndarray((10,10))
for i in xrange(10):
mat[i] = i

colors = ['black', 'blue', 'red', 'white']
index = [0.0, 0.5, 0.5, 1.0]

indx_clr = zip(index, colors)
cm = m.colors.LinearSegmentedColormap.from_list('blue_red', indx_clr, 256)

plt.imshow(mat, cmap=cm)
plt.show()

意外的插值如下所示,感谢 runner 。

enter image description here

我有 2 个问题。

  1. 为什么蓝色区域插值到红色区域?
  2. 如何创建结合了离散和插值色段的色图?

最佳答案

这是因为 imshow 的默认插值是双线性的。将其设置为 'none' 可能会使颜色显示如您所愿。

所以添加:

plt.imshow(mat, cmap=cm, interpolation='none')

然后它看起来像:

enter image description here

如果增加矩阵的大小,您会注意到红色和蓝色之间的边缘如预期的那样是离散的,而其余部分是插值的:

enter image description here

关于python - 使用 LinearSegmentedColormap 时出现意外插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20476583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com