gpt4 book ai didi

python - 如何将 NumPy 数组转换为 MatPlotLib 颜色图?

转载 作者:太空狗 更新时间:2023-10-30 03:05:40 26 4
gpt4 key购买 nike

我正在尝试创建 4 种不同颜色的彩色 map 。我有一个 NumPy 数组,该数组中有 4 个值:0、.25、.75 和 1。我如何制作 MatPlotLib 图,例如,绿色表示 0,蓝色表示 .25,黄色表示 .75,红色代表 1?

谢谢!

最佳答案

我建议使用这个函数将 Nx3 numpy 数组转换为颜色图

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors

#-----------------------------------------
def array2cmap(X):
N = X.shape[0]

r = np.linspace(0., 1., N+1)
r = np.sort(np.concatenate((r, r)))[1:-1]

rd = np.concatenate([[X[i, 0], X[i, 0]] for i in xrange(N)])
gr = np.concatenate([[X[i, 1], X[i, 1]] for i in xrange(N)])
bl = np.concatenate([[X[i, 2], X[i, 2]] for i in xrange(N)])

rd = tuple([(r[i], rd[i], rd[i]) for i in xrange(2 * N)])
gr = tuple([(r[i], gr[i], gr[i]) for i in xrange(2 * N)])
bl = tuple([(r[i], bl[i], bl[i]) for i in xrange(2 * N)])


cdict = {'red': rd, 'green': gr, 'blue': bl}
return colors.LinearSegmentedColormap('my_colormap', cdict, N)
#-----------------------------------------
if __name__ == "__main__":

#define the colormar
X = np.array([[0., 1., 0.], #green
[0., 0., 1.], #blue
[1., 1., 0.], #yellow
[1., 0., 0.]]) #red
mycmap = array2cmap(X)

values = np.random.rand(10, 10)
plt.gca().pcolormesh(values, cmap=mycmap)

cb = plt.cm.ScalarMappable(norm=None, cmap=mycmap)
cb.set_array(values)
cb.set_clim((0., 1.))
plt.gcf().colorbar(cb)
plt.show()

将产生: enter image description here

关于python - 如何将 NumPy 数组转换为 MatPlotLib 颜色图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364745/

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