我有一组数据在2d数组(72 * 144)。该2d数组中的元素集合从1到12和-999。这里是2D阵列的快照Python将二维数据聚类到图像?
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()
由此生成的图像只有2种颜色,白色和红色(CMAP arg)。我希望它能生成12种不同的颜色,一种用于数据集中的每个元素。所以,如果一个像素是1,那么它的某种颜色,然后是2时,那么它的另一种颜色,等等。
有人能告诉我如何实现这一目标吗?
感谢您的回答,但我仍然只看到两种颜色,我想为每个像素分配一种颜色。 – Pete 2014-10-31 13:05:15
@Pete你看到只有两种颜色的原因应该是因为你有-999,这样的极端数量,在你的矩阵中,这将使彩色地图混沌。解决这个问题的最简单方法可能是通过'a [np.where(a == - 999)] = 0'将所有-999分配给0。然后我会确定你看到了多种颜色。 – Jake0x32 2014-10-31 23:41:59
@Pete另外,如果你倾向于建立你自己的调色板,看看[这里](http://stackoverflow.com/questions/15207052/matplotlib-color-map-predefine-mappings-to-values)和[这里]( http://stanford.edu/~mwaskom/software/seaborn-dev/tutorial/color_palettes.html) – Jake0x32 2014-10-31 23:49:42