Python将2d数据集群到图像?
我有一组72*144的二维数组中的数据。该二维数组中的元素集介于1-12和-999之间。这是2d阵列的快照Python将2d数据集群到图像?,python,arrays,Python,Arrays,我有一组72*144的二维数组中的数据。该二维数组中的元素集介于1-12和-999之间。这是2d阵列的快照 array([[ 7, 7, 7, ..., 7, 7, 7], [ 7, 7, 7, ..., 7, 7, 7], [-999, -999, -999, ..., -999, -999, -999], ..., [-999, -999, -999, ..., -99
array([[ 7, 7, 7, ..., 7, 7, 7],
[ 7, 7, 7, ..., 7, 7, 7],
[-999, -999, -999, ..., -999, -999, -999],
...,
[-999, -999, -999, ..., -999, -999, -999],
[-999, -999, -999, ..., -999, -999, -999],
[-999, -999, -999, ..., -999, -999, -999]], dtype=int32)
我想从这个2d阵列创建一个图像,我已经能够使用以下代码创建该图像:
import numpy as np
from matplotlib import pylab as plt
A = np.fromfile('1984_Jan/yyyymmddhh.84010209', dtype='int32')
B = np.reshape(A, (72, 144))
plt.imshow(B, cmap=plt.cm.get_cmap("Reds"), interpolation="nearest")
plt.colorbar()
plt.show()
由此生成的图像只有两种颜色,白色和红色CMAP arg。我想让它生成12种不同的颜色,数据集中每个元素一种。所以,如果一个像素是1,那么它是某种颜色,当它是2,那么它是另一种颜色,依此类推
有人能告诉我如何做到这一点吗?您只需将get\u cmap中的参数留空,就可以为不同的数字使用不同的颜色: plt.imshowB,cmap=plt.cm.get\u cmap,插值=最近 但至少在我看来,这种方法不会创造一个体面的形象。因此,我建议您使用一些指定的颜色条形图,但不要使用那些连续的颜色贴图,例如使用gist_彩虹贴图将使其更好: plt.imshowa,cmap=plt.cm.get\u cmapgist\u rainbow,插值=最近
最后,请查看matplotlib提供的所有颜色贴图。谢谢您的回答,但我仍然只看到两种颜色,我想为每个像素指定一种颜色。@Pete之所以只看到两种颜色,应该是因为您的矩阵中有-999,这是一个极端数字,这会使颜色贴图混乱。解决这个问题最简单的方法是用[np.where==-999]=0将所有的-999赋值给0。然后我会确保您看到多种颜色。@Pete如果您想创建自己的调色板,请查看并感谢您的帮助0x382fd442。