所以在右邊我有1000個矩陣的特徵值譜散佈在彼此之上。在左邊,我想得到一個直方圖或密度函數,以便發生特徵值的位置和頻率。numpy的histogram2d和colormaps的問題
直方圖與numpy的完成:
bins = 200
d = max(max(re), max(im), -min(re), -min(im))
histogram2D, binsX, binsY = np.histogram2d(re, im, bins=bins, range=((-d,d),(-d,d)))
histogram2D = histogram2D.T
此外,以特徵值在每個箱量,我想直方圖仍然清楚地顯示在那裏發生的特徵值,並在那裏他們沒有。所以我做了我自己的顏色表:
def redblue_zeta(Zmin, Zmax, zeta=0.0):
breakingpoint = float(Zmin)+float(zeta)/(float(Zmax)-float(Zmin))
cdict = {'red': ((0.0, 1.0, 1.0), (breakingpoint, 1.0, 0.0), (1.0, 1.0, 1.0)),
'green': ((0.0, 1.0, 1.0), (breakingpoint, 1.0, 0.0), (1.0, 0.0, 0.0)),
'blue': ((0.0, 1.0, 1.0), (breakingpoint, 1.0, 1.0), (1.0, 0.0, 0.0))}
return(cdict)
(這是一個比較複雜一點,因爲我使用的其他地塊的地圖,澤塔> 0藏漢)然後我畫在:
Zmax = histogram2D.max()
cdict=cc.redblue_zeta(0,Zmax,zeta=0.0)
plt.register_cmap(name='rb', data=cdict)
plt.imshow(histogram2D, cmap=cm.get_cmap('rb'), extent=[-d, d, -d, d], interpolation='nearest')
所以一如果在該二維圖中存在恰好爲零的特徵值,則該二維圖中的點應該是白色的。否則,它應該是藍色和紅色之間的任何東西。但那不是我得到的。似乎直方圖或色圖將小值舍入爲零,因爲我在直方圖中得到了太小的藍色區域。有任何想法嗎?謝謝。