2011-06-07 93 views
7

我有一個2D numpy數組,我想要在一個顏色條中進行繪圖。我無法更改軸,以便顯示我的數據集。垂直軸從0下降到100,而我希望它從0.0上升到0.1。所以我需要做兩兩件事:在二維數組的matplotlib顏色條圖上修改座標軸

  • 使用np.flipud(),然後「倒裝」軸以及
  • 更改標籤去從0.0到0.1翻轉而不是0到100的陣列,

這裏是什麼我的彩條情節目前看起來像一個例子: Example of Colorbar plot

這裏是代碼:

data = np.load('scorr.npy') 
(x,y) = np.unravel_index(data.argmax(), data.shape) 
max=data[x][y] 

fig = plt.figure() 
ax = fig.add_subplot(111) 
cax = ax.imshow(data, interpolation='nearest') 
cbar = fig.colorbar(cax, ticks=[-max, 0, max]) 
cbar.ax.set_yticklabels([str(-max), '0', str(max)]) 
plt.show() 

有人有什麼建議嗎?提前致謝!

回答

9

你想看看imshow選項「起源」和「範圍」,我想。

import matplotlib.pyplot as plt 
import numpy as np 

x,y = np.mgrid[-2:2:0.1, -2:2:0.1] 
data = np.sin(x)*(y+1.05**(x*np.floor(y))) + 1/(abs(x-y)+0.01)*0.03 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ticks_at = [-abs(data).max(), 0, abs(data).max()] 
cax = ax.imshow(data, interpolation='nearest', 
       origin='lower', extent=[0.0, 0.1, 0.0, 0.1], 
       vmin=ticks_at[0], vmax=ticks_at[-1]) 
cbar = fig.colorbar(cax,ticks=ticks_at,format='%1.2g') 
fig.savefig('out.png') 

extent and origin

0

我知道更改圖像圖上的軸標籤的唯一方法是手動標記......如果有人有更清晰的方法,我很樂意學習它。

ax.yaxis.set_ticks(np.arange(0,100,10)) 
ax.yaxis.set_ticklabels(['%.2f' % 0.1/100*i for i in np.arange(0,100,10)])