2013-05-11 60 views
22

所以,我認爲這將是非常簡單的,但我一直在很難找到我正在尋找一個可理解的例子。二維數組Matplotlib Colorplot

基本上我想製作相位圖,所以假設我有一個2d數組,我怎樣才能讓matplotlib將它轉換爲一個可以附加標題,軸和圖例(彩條)的圖。

我正在尋找一個非常簡單的裸骨解決方案,只使用什麼是必需的,將與任何二維數組一起工作。

我敢肯定,這很簡單,我只是以某種方式厚厚,但我真的有很多麻煩。

我一直在使用這些示例的工具,但它們看起來並不適合我想要做的事情:我喜歡這個圖的一般外觀,我只是想能夠通過2dArray,並有相同的結果:

import numpy as np 
import matplotlib as ml 
import matplotlib.pyplot as plt 

H = [[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,16]] 

fig = plt.figure(figsize=(6, 3.2)) 

ax = fig.add_subplot(111) 
ax.set_title('colorMap') 
X,Y = np.meshgrid(xedges, yedges) 
plt.pcolormesh(X, Y, H) 
ax.set_aspect('equal') 

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8]) 
cax.get_xaxis().set_visible(False) 
cax.get_yaxis().set_visible(False) 
cax.patch.set_alpha(0) 
cax.set_frame_on(False) 
plt.colorbar(orientation='vertical') 
plt.show() 
+0

'imshow'不起作用? http://matplotlib.org/gallery.html – tacaswell 2013-05-11 01:21:53

+1

你能告訴我們你試過什麼嗎? – tacaswell 2013-05-11 01:23:26

+0

點擊看起來像你想要的圖片,他們包括代碼。 – tacaswell 2013-05-11 01:31:32

回答

30

恐怕你的發佈示例不工作,因爲X和Y沒有定義。因此,而不是pcolormesh再拿imshow

import numpy as np 
import matplotlib.pyplot as plt 

H = np.array([[1, 2, 3, 4], 
       [5, 6, 7, 8], 
       [9, 10, 11, 12], 
       [13, 14, 15, 16]]) # added some commas and array creation code 

fig = plt.figure(figsize=(6, 3.2)) 

ax = fig.add_subplot(111) 
ax.set_title('colorMap') 
plt.imshow(H) 
ax.set_aspect('equal') 

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8]) 
cax.get_xaxis().set_visible(False) 
cax.get_yaxis().set_visible(False) 
cax.patch.set_alpha(0) 
cax.set_frame_on(False) 
plt.colorbar(orientation='vertical') 
plt.show() 
+2

請注意,您將獲得軸圖例中的數組索引。如果您的行和列具有X和Y值,請查看'imshow()'的'extent'參數 – heltonbiker 2013-05-11 02:22:27

2

這裏是有代碼的關鍵線路最簡單的例子:

import numpy as np 
import matplotlib.pyplot as plt 

H = np.array([[1, 2, 3, 4], 
      [5, 6, 7, 8], 
      [9, 10, 11, 12], 
      [13, 14, 15, 16]]) 

plt.imshow(H) 
plt.show()