我有一組數據在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