2014-05-14 90 views
1

我掙扎着爬軸右:Matplotlib和numpy的histogram2d軸問題

我已經得到了xy價值,並希望它們繪製在2D直方圖(檢查相關性)。爲什麼我會在每個軸上獲得0-9的限制直方圖?我如何獲得它以顯示實際值範圍?

這是一個最小的例子,我希望看到紅色的「明星」在(3, 3)

import numpy as np 
import matplotlib.pyplot as plt 

x = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3) 
y = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3) 
xedges = range(5) 
yedges = range(5) 
H, xedges, yedges = np.histogram2d(y, x) 
im = plt.imshow(H, origin='low') 
plt.show() 

histogram2d

回答

3

我認爲這個問題是雙重的:

首先,你應該有5個箱在你的直方圖(將它設置爲10默認):

H, xedges, yedges = np.histogram2d(y, x,bins=5) 

其次,以設置軸值,可以使用extent參數,如每the histogram2d man pages

im = plt.imshow(H, interpolation=None, origin='low', 
       extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]]) 

enter image description here

1

如果我理解正確的話,你只需要設置interpolation='none'

import numpy as np 
import matplotlib.pyplot as plt 

x = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3) 
y = (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3) 
xedges = range(5) 
yedges = range(5) 
H, xedges, yedges = np.histogram2d(y, x) 
im = plt.imshow(H, origin='low', interpolation='none') 

enter image description here

這看起來不錯嗎?

+0

並非如此,紅色方塊仍然在(5,5)處,並且希望比例尺能夠反映實際的數據值。紅色方塊應該在(3,3)。 – tamasgal

+0

這是兩個,你需要'範圍'+'互動='無' – tacaswell